From 75934d92bc6866f9192336d6a5cda5b2314e2378 Mon Sep 17 00:00:00 2001 From: Shubham Kirve Date: Thu, 4 May 2023 21:41:01 +0530 Subject: [PATCH] TP-0000 | participant limit fix (#55) * TP-0000 | setting limit of 10 in get users api * TP-0000 | fetching all users by splitting them --- pkg/slackbot/users.go | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/pkg/slackbot/users.go b/pkg/slackbot/users.go index 2223c58..5ad0485 100644 --- a/pkg/slackbot/users.go +++ b/pkg/slackbot/users.go @@ -12,13 +12,18 @@ func (c *Client) GetUsersInfo(users ...string) (*[]slack.User, error) { if len(users) == 0 { return &[]slack.User{}, nil } - userInfo, err := c.socketModeClient.GetUsersInfo(users...) - if err != nil { - c.logger.Error("get users info failed", zap.Any("users", users), zap.Error(err)) - return nil, fmt.Errorf("get users info failed. err: %v", err) + var usersInfo []slack.User + splittedUsersList := splitUsers(users, 30) + for usersList := range splittedUsersList { + usersInfoResponse, err := c.socketModeClient.GetUsersInfo(splittedUsersList[usersList]...) + if err != nil { + c.logger.Error("get users info failed", zap.Any("users", splittedUsersList[usersList]), zap.Error(err)) + return nil, fmt.Errorf("get users info failed. err: %v", err) + } + usersInfo = append(usersInfo, *usersInfoResponse...) } - return userInfo, nil + return &usersInfo, nil } func (c *Client) GetUsersInConversation(channelId string) ([]string, error) { @@ -71,3 +76,15 @@ func (c *Client) GetUserEmailsOrNameByIds(userIds ...string) (map[string]string, }) return userIdAndIdentityMapping, nil } + +func splitUsers(users []string, chunkSize int) [][]string { + var result [][]string + for i := 0; i < len(users); i += chunkSize { + end := i + chunkSize + if end > len(users) { + end = len(users) + } + result = append(result, users[i:end]) + } + return result +}