Fix private channel joining bug (mattermost). Closes #248

This commit is contained in:
Wim 2017-08-30 14:01:17 +02:00
parent 8d4521c1df
commit 9e03fcf162
2 changed files with 15 additions and 4 deletions

View File

@ -2,6 +2,7 @@ package bmattermost
import ( import (
"errors" "errors"
"fmt"
"github.com/42wim/matterbridge/bridge/config" "github.com/42wim/matterbridge/bridge/config"
"github.com/42wim/matterbridge/matterclient" "github.com/42wim/matterbridge/matterclient"
"github.com/42wim/matterbridge/matterhook" "github.com/42wim/matterbridge/matterhook"
@ -132,7 +133,11 @@ func (b *Bmattermost) Disconnect() error {
func (b *Bmattermost) JoinChannel(channel config.ChannelInfo) error { func (b *Bmattermost) JoinChannel(channel config.ChannelInfo) error {
// we can only join channels using the API // we can only join channels using the API
if b.Config.WebhookURL == "" && b.Config.WebhookBindAddress == "" { if b.Config.WebhookURL == "" && b.Config.WebhookBindAddress == "" {
return b.mc.JoinChannel(b.mc.GetChannelId(channel.Name, "")) id := b.mc.GetChannelId(channel.Name, "")
if id == "" {
return fmt.Errorf("Could not find channel ID for channel %s", channel.Name)
}
return b.mc.JoinChannel(id)
} }
return nil return nil
} }

View File

@ -481,7 +481,7 @@ func (m *MMClient) JoinChannel(channelId string) error {
m.log.Debug("Joining ", channelId) m.log.Debug("Joining ", channelId)
_, resp := m.Client.AddChannelMember(channelId, m.User.Id) _, resp := m.Client.AddChannelMember(channelId, m.User.Id)
if resp.Error != nil { if resp.Error != nil {
return errors.New("failed to join") return resp.Error
} }
return nil return nil
} }
@ -812,13 +812,19 @@ func (m *MMClient) initUser() error {
for _, user := range mmusers { for _, user := range mmusers {
usermap[user.Id] = user usermap[user.Id] = user
} }
t := &Team{Team: team, Users: usermap, Id: team.Id} t := &Team{Team: team, Users: usermap, Id: team.Id}
mmchannels, resp := m.Client.GetPublicChannelsForTeam(team.Id, 0, 5000, "") mmchannels, resp := m.Client.GetChannelsForTeamForUser(team.Id, m.User.Id, "")
if resp.Error != nil { if resp.Error != nil {
return errors.New(resp.Error.DetailedError) return resp.Error
} }
t.Channels = mmchannels t.Channels = mmchannels
mmchannels, resp = m.Client.GetPublicChannelsForTeam(team.Id, 0, 5000, "")
if resp.Error != nil {
return resp.Error
}
t.MoreChannels = mmchannels
m.OtherTeams = append(m.OtherTeams, t) m.OtherTeams = append(m.OtherTeams, t)
if team.Name == m.Credentials.Team { if team.Name == m.Credentials.Team {
m.Team = t m.Team = t