summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Connolly <patrick.c.connolly@gmail.com>2019-01-09 15:50:03 -0500
committerWim <wim@42.be>2019-01-09 21:50:03 +0100
commitb33b50987b89676a5fb71476639d488e051315d8 (patch)
tree44e57e49a9fc7d37b4ca99e8b889e1db041725bc
parent5193634a5210857e1fe49fc1c2d4297912794935 (diff)
downloadmatterbridge-msglm-b33b50987b89676a5fb71476639d488e051315d8.tar.gz
matterbridge-msglm-b33b50987b89676a5fb71476639d488e051315d8.tar.bz2
matterbridge-msglm-b33b50987b89676a5fb71476639d488e051315d8.zip
Add support for mattermost threading (#627)
-rw-r--r--bridge/mattermost/handlers.go3
-rw-r--r--bridge/mattermost/mattermost.go4
-rw-r--r--matterclient/messages.go16
3 files changed, 12 insertions, 11 deletions
diff --git a/bridge/mattermost/handlers.go b/bridge/mattermost/handlers.go
index d75e8d40..cd625c55 100644
--- a/bridge/mattermost/handlers.go
+++ b/bridge/mattermost/handlers.go
@@ -104,6 +104,7 @@ 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{}),
}
@@ -163,7 +164,7 @@ 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 b0dca0ba..ce4f4c33 100644
--- a/bridge/mattermost/mattermost.go
+++ b/bridge/mattermost/mattermost.go
@@ -124,7 +124,7 @@ 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)
}
}
@@ -144,5 +144,5 @@ 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 985cfe04..c2325c09 100644
--- a/matterclient/messages.go
+++ b/matterclient/messages.go
@@ -146,8 +146,8 @@ 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
@@ -155,8 +155,8 @@ 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
@@ -173,11 +173,11 @@ 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)
@@ -194,7 +194,7 @@ 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)
}