Skip to content

Commit

Permalink
Paginate channels to get over 200 channels limit
Browse files Browse the repository at this point in the history
  • Loading branch information
42wim committed Nov 5, 2022
1 parent 272af20 commit bf1c6ad
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 21 deletions.
26 changes: 24 additions & 2 deletions channels.go
Original file line number Diff line number Diff line change
Expand Up @@ -224,8 +224,13 @@ func (m *Client) UpdateChannelsTeam(teamID string) error {
}
}

idx := 0
max := 200

var moreChannels []*model.Channel

for {
mmchannels, resp, err = m.Client.GetPublicChannelsForTeam(teamID, 0, 5000, "")
mmchannels, resp, err = m.Client.GetPublicChannelsForTeam(teamID, idx, max, "")
if err == nil {
break
}
Expand All @@ -235,10 +240,27 @@ func (m *Client) UpdateChannelsTeam(teamID string) error {
}
}

for len(mmchannels) > 0 {
moreChannels = append(moreChannels, mmchannels...)

for {
mmchannels, resp, err = m.Client.GetPublicChannelsForTeam(teamID, idx, max, "")
if err == nil {
idx++

break
}

if err := m.HandleRatelimit("GetPublicChannelsForTeam", resp); err != nil {
return err
}
}
}

for idx, t := range m.OtherTeams {
if t.ID == teamID {
m.Lock()
m.OtherTeams[idx].MoreChannels = mmchannels
m.OtherTeams[idx].MoreChannels = moreChannels
m.Unlock()
}
}
Expand Down
41 changes: 22 additions & 19 deletions matterclient.go
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,10 @@ func (m *Client) Login() error {
return err
}

if err := m.initUserChannels(); err != nil {
return err
}

if m.Team == nil {
validTeamNames := make([]string, len(m.OtherTeams))
for i, t := range m.OtherTeams {
Expand Down Expand Up @@ -332,38 +336,37 @@ func (m *Client) initUser() error {

time.Sleep(time.Millisecond * 200)
}

m.logger.Infof("found %d users in team %s", len(usermap), team.Name)
m.logger.Debugf("found %d users in team %s", len(usermap), team.Name)
// add all users
for k, v := range usermap {
m.Users[k] = v
}

t := &Team{
Team: team,
Users: usermap,
ID: team.Id,
}

mmchannels, _, err := m.Client.GetChannelsForTeamForUser(team.Id, m.User.Id, false, "")
if err != nil {
return err
}

t.Channels = mmchannels

mmchannels, _, err = m.Client.GetPublicChannelsForTeam(team.Id, 0, 5000, "")
if err != nil {
return err
}

t.MoreChannels = mmchannels
m.OtherTeams = append(m.OtherTeams, t)

if team.Name == m.Credentials.Team {
m.Team = t
m.logger.Debugf("initUser(): found our team %s (id: %s)", team.Name, team.Id)
}
// add all users
for k, v := range t.Users {
m.Users[k] = v
}
}

return nil
}

func (m *Client) initUserChannels() error {
if err := m.UpdateChannels(); err != nil {
return err
}

for _, t := range m.OtherTeams {
m.logger.Debugf("found %d channels for user in team %s", len(t.Channels), t.Team.Name)
m.logger.Debugf("found %d public channels in team %s", len(t.MoreChannels), t.Team.Name)
}

return nil
Expand Down

0 comments on commit bf1c6ad

Please sign in to comment.