diff options
Diffstat (limited to 'matterclient/channels.go')
-rw-r--r-- | matterclient/channels.go | 226 |
1 files changed, 0 insertions, 226 deletions
diff --git a/matterclient/channels.go b/matterclient/channels.go deleted file mode 100644 index 13d3277d..00000000 --- a/matterclient/channels.go +++ /dev/null @@ -1,226 +0,0 @@ -package matterclient - -import ( - "errors" - "strings" - - "github.com/mattermost/mattermost-server/v5/model" -) - -// GetChannels returns all channels we're members off -func (m *MMClient) GetChannels() []*model.Channel { - m.RLock() - defer m.RUnlock() - var channels []*model.Channel - // our primary team channels first - channels = append(channels, m.Team.Channels...) - for _, t := range m.OtherTeams { - if t.Id != m.Team.Id { - channels = append(channels, t.Channels...) - } - } - return channels -} - -func (m *MMClient) GetChannelHeader(channelId string) string { //nolint:golint - m.RLock() - defer m.RUnlock() - for _, t := range m.OtherTeams { - for _, channel := range append(t.Channels, t.MoreChannels...) { - if channel.Id == channelId { - return channel.Header - } - - } - } - return "" -} - -func getNormalisedName(channel *model.Channel) string { - if channel.Type == model.CHANNEL_GROUP { - // (deprecated in favor of ReplaceAll in go 1.12) - res := strings.Replace(channel.DisplayName, ", ", "-", -1) //nolint: gocritic - res = strings.Replace(res, " ", "_", -1) //nolint: gocritic - return res - } - return channel.Name -} - -func (m *MMClient) GetChannelId(name string, teamId string) string { //nolint:golint - m.RLock() - defer m.RUnlock() - if teamId != "" { - return m.getChannelIdTeam(name, teamId) - } - - for _, t := range m.OtherTeams { - for _, channel := range append(t.Channels, t.MoreChannels...) { - if getNormalisedName(channel) == name { - return channel.Id - } - } - } - return "" -} - -func (m *MMClient) getChannelIdTeam(name string, teamId string) string { //nolint:golint - for _, t := range m.OtherTeams { - if t.Id == teamId { - for _, channel := range append(t.Channels, t.MoreChannels...) { - if getNormalisedName(channel) == name { - return channel.Id - } - } - } - } - return "" -} - -func (m *MMClient) GetChannelName(channelId string) string { //nolint:golint - m.RLock() - defer m.RUnlock() - for _, t := range m.OtherTeams { - if t == nil { - continue - } - for _, channel := range append(t.Channels, t.MoreChannels...) { - if channel.Id == channelId { - return getNormalisedName(channel) - } - } - } - return "" -} - -func (m *MMClient) GetChannelTeamId(id string) string { //nolint:golint - m.RLock() - defer m.RUnlock() - for _, t := range append(m.OtherTeams, m.Team) { - for _, channel := range append(t.Channels, t.MoreChannels...) { - if channel.Id == id { - return channel.TeamId - } - } - } - return "" -} - -func (m *MMClient) GetLastViewedAt(channelId string) int64 { //nolint:golint - m.RLock() - defer m.RUnlock() - res, resp := m.Client.GetChannelMember(channelId, m.User.Id, "") - if resp.Error != nil { - return model.GetMillis() - } - return res.LastViewedAt -} - -// GetMoreChannels returns existing channels where we're not a member off. -func (m *MMClient) GetMoreChannels() []*model.Channel { - m.RLock() - defer m.RUnlock() - var channels []*model.Channel - for _, t := range m.OtherTeams { - channels = append(channels, t.MoreChannels...) - } - return channels -} - -// GetTeamFromChannel returns teamId belonging to channel (DM channels have no teamId). -func (m *MMClient) GetTeamFromChannel(channelId string) string { //nolint:golint - m.RLock() - defer m.RUnlock() - var channels []*model.Channel - for _, t := range m.OtherTeams { - channels = append(channels, t.Channels...) - if t.MoreChannels != nil { - channels = append(channels, t.MoreChannels...) - } - for _, c := range channels { - if c.Id == channelId { - if c.Type == model.CHANNEL_GROUP { - return "G" - } - return t.Id - } - } - channels = nil - } - return "" -} - -func (m *MMClient) JoinChannel(channelId string) error { //nolint:golint - m.RLock() - defer m.RUnlock() - for _, c := range m.Team.Channels { - if c.Id == channelId { - m.logger.Debug("Not joining ", channelId, " already joined.") - return nil - } - } - m.logger.Debug("Joining ", channelId) - _, resp := m.Client.AddChannelMember(channelId, m.User.Id) - if resp.Error != nil { - return resp.Error - } - return nil -} - -func (m *MMClient) UpdateChannelsTeam(teamID string) error { - mmchannels, resp := m.Client.GetChannelsForTeamForUser(teamID, m.User.Id, false, "") - if resp.Error != nil { - return errors.New(resp.Error.DetailedError) - } - for idx, t := range m.OtherTeams { - if t.Id == teamID { - m.Lock() - m.OtherTeams[idx].Channels = mmchannels - m.Unlock() - } - } - - mmchannels, resp = m.Client.GetPublicChannelsForTeam(teamID, 0, 5000, "") - if resp.Error != nil { - return errors.New(resp.Error.DetailedError) - } - for idx, t := range m.OtherTeams { - if t.Id == teamID { - m.Lock() - m.OtherTeams[idx].MoreChannels = mmchannels - m.Unlock() - } - } - return nil -} - -func (m *MMClient) UpdateChannels() error { - if err := m.UpdateChannelsTeam(m.Team.Id); err != nil { - return err - } - for _, t := range m.OtherTeams { - if err := m.UpdateChannelsTeam(t.Id); err != nil { - return err - } - } - return nil -} - -func (m *MMClient) UpdateChannelHeader(channelId string, header string) { //nolint:golint - channel := &model.Channel{Id: channelId, Header: header} - m.logger.Debugf("updating channelheader %#v, %#v", channelId, header) - _, resp := m.Client.UpdateChannel(channel) - if resp.Error != nil { - m.logger.Error(resp.Error) - } -} - -func (m *MMClient) UpdateLastViewed(channelId string) error { //nolint:golint - m.logger.Debugf("posting lastview %#v", channelId) - view := &model.ChannelView{ChannelId: channelId} - _, resp := m.Client.ViewChannel(m.User.Id, view) - if resp.Error != nil { - m.logger.Errorf("ChannelView update for %s failed: %s", channelId, resp.Error) - return resp.Error - } - return nil -} |