forked from jshiffer/matterbridge
Fix private channel joining bug (mattermost). Closes #248
This commit is contained in:
parent
8d4521c1df
commit
9e03fcf162
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user