From e583ee80845b8f69e1fab7a50401b2df70ddbe2d Mon Sep 17 00:00:00 2001 From: Haw Loeung Date: Wed, 2 Nov 2022 09:30:18 +1100 Subject: [PATCH] Fallback to use API for getting channel data when not in the cache --- bridge/mattermost6/mattermost.go | 13 ++++++++++++- .../matterbridge/matterclient/channels.go | 8 +++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/bridge/mattermost6/mattermost.go b/bridge/mattermost6/mattermost.go index 0d9e4d32..ebc63ce6 100644 --- a/bridge/mattermost6/mattermost.go +++ b/bridge/mattermost6/mattermost.go @@ -563,7 +563,18 @@ func (m *Mattermost) GetChannel(channelID string) (*bridge.ChannelInfo, error) { } } - return nil, errors.New("channel not found") + // Fallback if it's not found in the cache. + mmchannel, _, err := m.mc.Client.GetChannel(channelID, "") + if err != nil { + return nil, errors.New("channel not found") + } + return &bridge.ChannelInfo{ + Name: mmchannel.Name, + ID: mmchannel.Id, + TeamID: mmchannel.TeamId, + DM: mmchannel.IsGroupOrDirect(), + Private: !mmchannel.IsOpen(), + }, nil } func (m *Mattermost) GetUser(userID string) *bridge.UserInfo { diff --git a/vendor/github.com/matterbridge/matterclient/channels.go b/vendor/github.com/matterbridge/matterclient/channels.go index 6bf22a68..1ac242ba 100644 --- a/vendor/github.com/matterbridge/matterclient/channels.go +++ b/vendor/github.com/matterbridge/matterclient/channels.go @@ -80,7 +80,13 @@ func (m *Client) getChannelIDTeam(name string, teamID string) string { } } - return "" + // Fallback if it's not found in the t.Channels or t.MoreChannels cache. + // This also let's us join private channels. + channel, _, err := m.Client.GetChannelByName(name, teamID, "") + if err != nil { + return "" + } + return channel.Id } func (m *Client) GetChannelName(channelID string) string {