Thumbnail

rani/matterbridge.git

Clone URL: https://git.buni.party/rani/matterbridge.git

commit 4fc672838677654082153a2bc81b5627364135b2 Author: Wim <wim@42.be> Date: Sat Nov 12 22:00:53 2016 +0000 Sync with mattermost 3.5.0 diff --git a/bridge/mattermost/mattermost.go b/bridge/mattermost/mattermost.go index 7f7340b..8328f0b 100644 --- a/bridge/mattermost/mattermost.go +++ b/bridge/mattermost/mattermost.go @@ -1537 +1537 @@ func (b *Bmattermost) handleMatterClient(mchan chan *MMMessage) {   for message := range b.mc.MessageChan {   // do not post our own messages back to irc   // only listen to message from our team - if message.Raw.Event == "posted" && b.mc.User.Username != message.Username && message.Raw.TeamId == b.TeamId { + if message.Raw.Event == "posted" && b.mc.User.Username != message.Username && message.Raw.Data["team_id"].(string) == b.TeamId {   flog.Debugf("Receiving from matterclient %#v", message)   m := &MMMessage{}   m.Username = message.Username diff --git a/matterclient/matterclient.go b/matterclient/matterclient.go index 38be9b0..90c8d1a 100644 --- a/matterclient/matterclient.go +++ b/matterclient/matterclient.go @@ -2647 +2647 @@ func (m *MMClient) parseActionPost(rmsg *Message) {   }   rmsg.Username = m.GetUser(data.UserId).Username   rmsg.Channel = m.GetChannelName(data.ChannelId) - rmsg.Team = m.GetTeamName(rmsg.Raw.TeamId) + rmsg.Team = m.GetTeamName(rmsg.Raw.Data["team_id"].(string))   // direct message   if rmsg.Raw.Data["channel_type"] == "D" {   rmsg.Channel = m.GetUser(data.UserId).Username @@ -2757 +2757 @@ func (m *MMClient) parseActionPost(rmsg *Message) {  }    func (m *MMClient) UpdateUsers() error { - mmusers, err := m.Client.GetProfilesForDirectMessageList(m.Team.Id) + mmusers, err := m.Client.GetProfiles(0, 1000, "")   if err != nil {   return errors.New(err.DetailedError)   } @@ -3057 +3057 @@ func (m *MMClient) GetChannelName(channelId string) string {   m.RLock()   defer m.RUnlock()   for _, t := range m.OtherTeams { - for _, channel := range append(t.Channels.Channels, t.MoreChannels.Channels...) { + for _, channel := range append(*t.Channels, *t.MoreChannels...) {   if channel.Id == channelId {   return channel.Name   } @@ -3227 +3227 @@ func (m *MMClient) GetChannelId(name string, teamId string) string {   }   for _, t := range m.OtherTeams {   if t.Id == teamId { - for _, channel := range append(t.Channels.Channels, t.MoreChannels.Channels...) { + for _, channel := range append(*t.Channels, *t.MoreChannels...) {   if channel.Name == name {   return channel.Id   } @@ -3367 +3367 @@ func (m *MMClient) GetChannelHeader(channelId string) string {   m.RLock()   defer m.RUnlock()   for _, t := range m.OtherTeams { - for _, channel := range append(t.Channels.Channels, t.MoreChannels.Channels...) { + for _, channel := range append(*t.Channels, *t.MoreChannels...) {   if channel.Id == channelId {   return channel.Header   } @@ -3547 +3547 @@ func (m *MMClient) PostMessage(channelId string, text string) {  func (m *MMClient) JoinChannel(channelId string) error {   m.RLock()   defer m.RUnlock() - for _, c := range m.Team.Channels.Channels { + for _, c := range *m.Team.Channels {   if c.Id == channelId {   m.log.Debug("Not joining ", channelId, " already joined.")   return nil @@ -3977 +3977 @@ func (m *MMClient) GetPublicLink(filename string) string {   if err != nil {   return ""   } - return res.Data.(string) + return res  }    func (m *MMClient) GetPublicLinks(filenames []string) []string { @@ -4077 +4077 @@ func (m *MMClient) GetPublicLinks(filenames []string) []string {   if err != nil {   continue   } - output = append(output, res.Data.(string)) + output = append(output, res)   }   return output  } @@ -43215 +43217 @@ func (m *MMClient) UpdateLastViewed(channelId string) {  }    func (m *MMClient) UsernamesInChannel(channelId string) []string { - ceiRes, err := m.Client.GetChannelExtraInfo(channelId, 5000, "") + res, err := m.Client.GetMyChannelMembers()   if err != nil {   m.log.Errorf("UsernamesInChannel(%s) failed: %s", channelId, err)   return []string{}   } - extra := ceiRes.Data.(*model.ChannelExtra) + members := res.Data.(*model.ChannelMembers)   result := []string{} - for _, member := range extra.Members { - result = append(result, member.Username) + for _, channel := range *members { + if channel.ChannelId == channelId { + result = append(result, m.GetUser(channel.UserId).Username) + }   }   return result  } @@ -50010 +50210 @@ func (m *MMClient) GetChannels() []*model.Channel {   defer m.RUnlock()   var channels []*model.Channel   // our primary team channels first - channels = append(channels, m.Team.Channels.Channels...) + channels = append(channels, *m.Team.Channels...)   for _, t := range m.OtherTeams {   if t.Id != m.Team.Id { - channels = append(channels, t.Channels.Channels...) + channels = append(channels, *t.Channels...)   }   }   return channels @@ -5157 +5177 @@ func (m *MMClient) GetMoreChannels() []*model.Channel {   defer m.RUnlock()   var channels []*model.Channel   for _, t := range m.OtherTeams { - channels = append(channels, t.MoreChannels.Channels...) + channels = append(channels, *t.MoreChannels...)   }   return channels  } @@ -5268 +5288 @@ func (m *MMClient) GetTeamFromChannel(channelId string) string {   defer m.RUnlock()   var channels []*model.Channel   for _, t := range m.OtherTeams { - channels = append(channels, t.Channels.Channels...) - channels = append(channels, t.MoreChannels.Channels...) + channels = append(channels, *t.Channels...) + channels = append(channels, *t.MoreChannels...)   for _, c := range channels {   if c.Id == channelId {   return t.Id @@ -54011 +54213 @@ func (m *MMClient) GetTeamFromChannel(channelId string) string {  func (m *MMClient) GetLastViewedAt(channelId string) int64 {   m.RLock()   defer m.RUnlock() - for _, t := range m.OtherTeams { - if _, ok := t.Channels.Members[channelId]; ok { - return t.Channels.Members[channelId].LastViewedAt + /* + for _, t := range m.OtherTeams { + if _, ok := t.Channels.Members[channelId]; ok { + return t.Channels.Members[channelId].LastViewedAt + }   } - } + */   return 0  }   @@ -6197 +6237 @@ func (m *MMClient) initUser() error {   //m.log.Debug("initUser(): loading all team data")   for _, v := range initData.Teams {   m.Client.SetTeamId(v.Id) - mmusers, _ := m.Client.GetProfiles(v.Id, "") + mmusers, _ := m.Client.GetProfiles(0, 1000, "")   t := &Team{Team: v, Users: mmusers.Data.(map[string]*model.User), Id: v.Id}   mmchannels, _ := m.Client.GetChannels("")   t.Channels = mmchannels.Data.(*model.ChannelList)