Thumbnail

rani/matterbridge.git

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

commit c88e6c61dea53ee03c181c608c924a060252c253 Author: Patrick Connolly <patrick.c.connolly@gmail.com> Date: Wed Jan 09 15:50:03 2019 +0000 Add support for mattermost threading (#627) diff --git a/bridge/mattermost/handlers.go b/bridge/mattermost/handlers.go index d75e8d4..cd625c5 100644 --- a/bridge/mattermost/handlers.go +++ b/bridge/mattermost/handlers.go @@ -1046 +1047 @@ func (b *Bmattermost) handleMatterClient(messages chan *config.Message) {   Channel: message.Channel,   Text: message.Text,   ID: message.Post.Id, + ParentID: message.Post.ParentId,   Extra: make(map[string][]interface{}),   }   @@ -1637 +1647 @@ func (b *Bmattermost) handleUploadFile(msg *config.Message) (string, error) {   if b.GetBool("PrefixMessagesWithNick") {   msg.Text = msg.Username + msg.Text   } - res, err = b.mc.PostMessageWithFiles(channelID, msg.Text, []string{id}) + res, err = b.mc.PostMessageWithFiles(channelID, msg.Text, msg.ParentID, []string{id})   }   return res, err  } diff --git a/bridge/mattermost/mattermost.go b/bridge/mattermost/mattermost.go index b0dca0b..ce4f4c3 100644 --- a/bridge/mattermost/mattermost.go +++ b/bridge/mattermost/mattermost.go @@ -1247 +1247 @@ func (b *Bmattermost) Send(msg config.Message) (string, error) {   // Upload a file if it exists   if msg.Extra != nil {   for _, rmsg := range helper.HandleExtra(&msg, b.General) { - if _, err := b.mc.PostMessage(b.mc.GetChannelId(rmsg.Channel, b.TeamID), rmsg.Username+rmsg.Text); err != nil { + if _, err := b.mc.PostMessage(b.mc.GetChannelId(rmsg.Channel, b.TeamID), rmsg.Username+rmsg.Text, msg.ParentID); err != nil {   b.Log.Errorf("PostMessage failed: %s", err)   }   } @@ -1445 +1445 @@ func (b *Bmattermost) Send(msg config.Message) (string, error) {   }     // Post normal message - return b.mc.PostMessage(b.mc.GetChannelId(msg.Channel, b.TeamID), msg.Text) + return b.mc.PostMessage(b.mc.GetChannelId(msg.Channel, b.TeamID), msg.Text, msg.ParentID)  } diff --git a/matterclient/messages.go b/matterclient/messages.go index 985cfe0..c2325c0 100644 --- a/matterclient/messages.go +++ b/matterclient/messages.go @@ -1468 +1468 @@ func (m *MMClient) GetPublicLinks(filenames []string) []string {   return output  }   -func (m *MMClient) PostMessage(channelId string, text string) (string, error) { //nolint:golint - post := &model.Post{ChannelId: channelId, Message: text} +func (m *MMClient) PostMessage(channelId string, text string, rootId string) (string, error) { //nolint:golint + post := &model.Post{ChannelId: channelId, Message: text, RootId: rootId}   res, resp := m.Client.CreatePost(post)   if resp.Error != nil {   return "", resp.Error @@ -1558 +1558 @@ func (m *MMClient) PostMessage(channelId string, text string) (string, error) {   return res.Id, nil  }   -func (m *MMClient) PostMessageWithFiles(channelId string, text string, fileIds []string) (string, error) { //nolint:golint - post := &model.Post{ChannelId: channelId, Message: text, FileIds: fileIds} +func (m *MMClient) PostMessageWithFiles(channelId string, text string, rootId string, fileIds []string) (string, error) { //nolint:golint + post := &model.Post{ChannelId: channelId, Message: text, RootId: rootId, FileIds: fileIds}   res, resp := m.Client.CreatePost(post)   if resp.Error != nil {   return "", resp.Error @@ -17311 +17311 @@ func (m *MMClient) SearchPosts(query string) *model.PostList {  }    // SendDirectMessage sends a direct message to specified user -func (m *MMClient) SendDirectMessage(toUserId string, msg string) { //nolint:golint - m.SendDirectMessageProps(toUserId, msg, nil) +func (m *MMClient) SendDirectMessage(toUserId string, msg string, rootId string) { //nolint:golint + m.SendDirectMessageProps(toUserId, msg, rootId, nil)  }   -func (m *MMClient) SendDirectMessageProps(toUserId string, msg string, props map[string]interface{}) { //nolint:golint +func (m *MMClient) SendDirectMessageProps(toUserId string, msg string, rootId string, props map[string]interface{}) { //nolint:golint   m.log.Debugf("SendDirectMessage to %s, msg %s", toUserId, msg)   // create DM channel (only happens on first message)   _, resp := m.Client.CreateDirectChannel(m.User.Id, toUserId) @@ -1947 +1947 @@ func (m *MMClient) SendDirectMessageProps(toUserId string, msg string, props map     // build & send the message   msg = strings.Replace(msg, "\r", "", -1) - post := &model.Post{ChannelId: m.GetChannelId(channelName, m.Team.Id), Message: msg, Props: props} + post := &model.Post{ChannelId: m.GetChannelId(channelName, m.Team.Id), Message: msg, RootId: rootId, Props: props}   m.Client.CreatePost(post)  }