(ctx context.Context, flags *RootFlags)
| 23 | } |
| 24 | |
| 25 | func (c *ChatThreadsListCmd) Run(ctx context.Context, flags *RootFlags) error { |
| 26 | u := ui.FromContext(ctx) |
| 27 | space, err := normalizeSpace(c.Space) |
| 28 | if err != nil { |
| 29 | return usage("required: space") |
| 30 | } |
| 31 | if c.Max <= 0 { |
| 32 | return usage("max must be > 0") |
| 33 | } |
| 34 | account, err := requireAccount(flags) |
| 35 | if err != nil { |
| 36 | return err |
| 37 | } |
| 38 | if err = requireWorkspaceAccount(account); err != nil { |
| 39 | return err |
| 40 | } |
| 41 | |
| 42 | svc, err := chatService(ctx, account) |
| 43 | if err != nil { |
| 44 | return err |
| 45 | } |
| 46 | |
| 47 | fetch := func(pageToken string) ([]*chat.Message, string, error) { |
| 48 | call := svc.Spaces.Messages.List(space). |
| 49 | PageSize(c.Max). |
| 50 | OrderBy("createTime desc"). |
| 51 | Context(ctx) |
| 52 | if strings.TrimSpace(pageToken) != "" { |
| 53 | call = call.PageToken(pageToken) |
| 54 | } |
| 55 | resp, callErr := call.Do() |
| 56 | if callErr != nil { |
| 57 | return nil, "", callErr |
| 58 | } |
| 59 | return resp.Messages, resp.NextPageToken, nil |
| 60 | } |
| 61 | |
| 62 | messages, nextPageToken, err := loadPagedItems(c.Page, c.All, fetch) |
| 63 | if err != nil { |
| 64 | return err |
| 65 | } |
| 66 | |
| 67 | threads := make([]*chatMessageThreadItem, 0, len(messages)) |
| 68 | seen := make(map[string]bool) |
| 69 | for _, msg := range messages { |
| 70 | if msg == nil { |
| 71 | continue |
| 72 | } |
| 73 | threadName := chatMessageThread(msg) |
| 74 | if threadName == "" { |
| 75 | continue |
| 76 | } |
| 77 | if seen[threadName] { |
| 78 | continue |
| 79 | } |
| 80 | seen[threadName] = true |
| 81 | threads = append(threads, &chatMessageThreadItem{message: msg, thread: threadName}) |
| 82 | } |
nothing calls this directly
no test coverage detected