summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/matterbridge/matterclient/users.go
diff options
context:
space:
mode:
authorWim <wim@42.be>2021-10-16 23:11:32 +0200
committerWim <wim@42.be>2021-10-16 23:23:24 +0200
commit20f6c05ec50739d31f4dbe9fde0d223f2c43f6e8 (patch)
tree230edca06449a8d1755f08aabf45a03e07e6f17c /vendor/github.com/matterbridge/matterclient/users.go
parent57fce93af7f64f025cec6f3ed6088163086bc9fe (diff)
downloadmatterbridge-msglm-20f6c05ec50739d31f4dbe9fde0d223f2c43f6e8.tar.gz
matterbridge-msglm-20f6c05ec50739d31f4dbe9fde0d223f2c43f6e8.tar.bz2
matterbridge-msglm-20f6c05ec50739d31f4dbe9fde0d223f2c43f6e8.zip
Update vendor
Diffstat (limited to 'vendor/github.com/matterbridge/matterclient/users.go')
-rw-r--r--vendor/github.com/matterbridge/matterclient/users.go212
1 files changed, 212 insertions, 0 deletions
diff --git a/vendor/github.com/matterbridge/matterclient/users.go b/vendor/github.com/matterbridge/matterclient/users.go
new file mode 100644
index 00000000..30ea51a2
--- /dev/null
+++ b/vendor/github.com/matterbridge/matterclient/users.go
@@ -0,0 +1,212 @@
+package matterclient
+
+import (
+ "github.com/mattermost/mattermost-server/v6/model"
+)
+
+func (m *Client) GetNickName(userID string) string {
+ if user := m.GetUser(userID); user != nil {
+ return user.Nickname
+ }
+
+ return ""
+}
+
+func (m *Client) GetStatus(userID string) string {
+ res, _, err := m.Client.GetUserStatus(userID, "")
+ if err != nil {
+ return ""
+ }
+
+ if res.Status == model.StatusAway {
+ return "away"
+ }
+
+ if res.Status == model.StatusOnline {
+ return "online"
+ }
+
+ return "offline"
+}
+
+func (m *Client) GetStatuses() map[string]string {
+ var ids []string
+
+ statuses := make(map[string]string)
+
+ for id := range m.Users {
+ ids = append(ids, id)
+ }
+
+ res, _, err := m.Client.GetUsersStatusesByIds(ids)
+ if err != nil {
+ return statuses
+ }
+
+ for _, status := range res {
+ statuses[status.UserId] = "offline"
+ if status.Status == model.StatusAway {
+ statuses[status.UserId] = "away"
+ }
+
+ if status.Status == model.StatusOnline {
+ statuses[status.UserId] = "online"
+ }
+ }
+
+ return statuses
+}
+
+func (m *Client) GetTeamID() string {
+ return m.Team.ID
+}
+
+// GetTeamName returns the name of the specified teamId
+func (m *Client) GetTeamName(teamID string) string {
+ m.RLock()
+ defer m.RUnlock()
+
+ for _, t := range m.OtherTeams {
+ if t.ID == teamID {
+ return t.Team.Name
+ }
+ }
+
+ return ""
+}
+
+func (m *Client) GetUser(userID string) *model.User {
+ m.Lock()
+ defer m.Unlock()
+
+ _, ok := m.Users[userID]
+ if !ok {
+ res, _, err := m.Client.GetUser(userID, "")
+ if err != nil {
+ return nil
+ }
+
+ m.Users[userID] = res
+ }
+
+ return m.Users[userID]
+}
+
+func (m *Client) GetUserName(userID string) string {
+ if user := m.GetUser(userID); user != nil {
+ return user.Username
+ }
+
+ return ""
+}
+
+func (m *Client) GetUsers() map[string]*model.User {
+ users := make(map[string]*model.User)
+
+ m.RLock()
+ defer m.RUnlock()
+
+ for k, v := range m.Users {
+ users[k] = v
+ }
+
+ return users
+}
+
+func (m *Client) UpdateUsers() error {
+ idx := 0
+ max := 200
+
+ var (
+ mmusers []*model.User
+ resp *model.Response
+ err error
+ )
+
+ for {
+ mmusers, resp, err = m.Client.GetUsers(idx, max, "")
+ if err == nil {
+ break
+ }
+
+ if err = m.HandleRatelimit("GetUsers", resp); err != nil {
+ return err
+ }
+ }
+
+ for len(mmusers) > 0 {
+ m.Lock()
+
+ for _, user := range mmusers {
+ m.Users[user.Id] = user
+ }
+
+ m.Unlock()
+
+ for {
+ mmusers, resp, err = m.Client.GetUsers(idx, max, "")
+ if err == nil {
+ idx++
+
+ break
+ }
+
+ if err := m.HandleRatelimit("GetUsers", resp); err != nil {
+ return err
+ }
+ }
+ }
+
+ return nil
+}
+
+func (m *Client) UpdateUserNick(nick string) error {
+ user := m.User
+ user.Nickname = nick
+
+ _, _, err := m.Client.UpdateUser(user)
+ if err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func (m *Client) UsernamesInChannel(channelID string) []string {
+ res, _, err := m.Client.GetChannelMembers(channelID, 0, 50000, "")
+ if err != nil {
+ m.logger.Errorf("UsernamesInChannel(%s) failed: %s", channelID, err)
+
+ return []string{}
+ }
+
+ allusers := m.GetUsers()
+ result := []string{}
+
+ for _, member := range res {
+ result = append(result, allusers[member.UserId].Nickname)
+ }
+
+ return result
+}
+
+func (m *Client) UpdateStatus(userID string, status string) error {
+ _, _, err := m.Client.UpdateUserStatus(userID, &model.Status{Status: status})
+ if err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func (m *Client) UpdateUser(userID string) {
+ m.Lock()
+ defer m.Unlock()
+
+ res, _, err := m.Client.GetUser(userID, "")
+ if err != nil {
+ return
+ }
+
+ m.Users[userID] = res
+}