summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bridge/slack/helpers.go7
-rw-r--r--bridge/slack/slack.go6
-rw-r--r--gateway/gateway.go6
3 files changed, 19 insertions, 0 deletions
diff --git a/bridge/slack/helpers.go b/bridge/slack/helpers.go
index 9959d4fa..4d191c0d 100644
--- a/bridge/slack/helpers.go
+++ b/bridge/slack/helpers.go
@@ -254,6 +254,13 @@ func (b *Bslack) populateReceivedMessage(ev *slack.MessageEvent) (*config.Messag
}
}
+ // For edits, only submessage has thread ts.
+ // Ensures edits to threaded messages maintain their prefix hint on the
+ // unthreaded end.
+ if ev.SubMessage != nil {
+ rmsg.ParentID = ev.SubMessage.ThreadTimestamp
+ }
+
if err = b.populateMessageWithUserInfo(ev, rmsg); err != nil {
return nil, err
}
diff --git a/bridge/slack/slack.go b/bridge/slack/slack.go
index 001b1268..1685c4fc 100644
--- a/bridge/slack/slack.go
+++ b/bridge/slack/slack.go
@@ -293,6 +293,12 @@ func (b *Bslack) sendRTM(msg config.Message) (string, error) {
return "", err
}
+ // Handle prefix hint for unthreaded messages.
+ if msg.ParentID == "msg-parent-not-found" {
+ msg.ParentID = ""
+ msg.Text = fmt.Sprintf("[thread]: %s", msg.Text)
+ }
+
// Handle message deletions.
if handled, err = b.deleteMessage(&msg, channelInfo); handled {
return msg.ID, err
diff --git a/gateway/gateway.go b/gateway/gateway.go
index 6fe19963..72d0831b 100644
--- a/gateway/gateway.go
+++ b/gateway/gateway.go
@@ -398,6 +398,12 @@ func (gw *Gateway) SendMessage(origmsg config.Message, dest *bridge.Bridge, chan
msg.ParentID = canonicalParentMsgID
}
+ // if the parentID is still empty and we have a parentID set in the original message
+ // this means that we didn't find it in the cache so set it "msg-parent-not-found"
+ if msg.ParentID == "" && origmsg.ParentID != "" {
+ msg.ParentID = "msg-parent-not-found"
+ }
+
// if we are using mattermost plugin account, send messages to MattermostPlugin channel
// that can be picked up by the mattermost matterbridge plugin
if dest.Account == "mattermost.plugin" {