From f3e0358de7720dca350f2d9955827707d4810f51 Mon Sep 17 00:00:00 2001 From: Wim Date: Sat, 1 Jul 2017 23:02:56 +0200 Subject: [PATCH] Optimize UpdateUsers usage. (from @recht matterircd fork) --- matterclient/matterclient.go | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/matterclient/matterclient.go b/matterclient/matterclient.go index 61eccacf..1dcab802 100644 --- a/matterclient/matterclient.go +++ b/matterclient/matterclient.go @@ -527,17 +527,15 @@ func (m *MMClient) UpdateLastViewed(channelId string) { } func (m *MMClient) UsernamesInChannel(channelId string) []string { - res, err := m.Client.GetMyChannelMembers() + res, err := m.Client.GetProfilesInChannel(channelId, 0, 50000, "") if err != nil { m.log.Errorf("UsernamesInChannel(%s) failed: %s", channelId, err) return []string{} } - members := res.Data.(*model.ChannelMembers) + members := res.Data.(map[string]*model.User) result := []string{} - for _, channel := range *members { - if channel.ChannelId == channelId { - result = append(result, m.GetUser(channel.UserId).Username) - } + for _, member := range members { + result = append(result, member.Nickname) } return result } @@ -665,6 +663,15 @@ func (m *MMClient) GetUsers() map[string]*model.User { func (m *MMClient) GetUser(userId string) *model.User { m.Lock() defer m.Unlock() + u, ok := m.Users[userId] + if !ok { + res, err := m.Client.GetProfilesByIds([]string{userId}) + if err != nil { + return nil + } + u = res.Data.(map[string]*model.User)[userId] + m.Users[userId] = u + } return m.Users[userId] }