diff options
author | Qais Patankar <qaisjp@gmail.com> | 2020-03-21 20:03:12 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-21 21:03:12 +0100 |
commit | d4acdf2f896f46e78916ba34b3cb942e6b677d7b (patch) | |
tree | aedccd56da4432bff188ff09864d152123af7f40 /bridge/slack | |
parent | 0951e75c859e05508b0f2b2306acf963a863d5f9 (diff) | |
download | matterbridge-msglm-d4acdf2f896f46e78916ba34b3cb942e6b677d7b.tar.gz matterbridge-msglm-d4acdf2f896f46e78916ba34b3cb942e6b677d7b.tar.bz2 matterbridge-msglm-d4acdf2f896f46e78916ba34b3cb942e6b677d7b.zip |
Use blocks not attachments (slack) (#1048)
This removes the extra space below messages, as shown in
https://user-images.githubusercontent.com/923242/77235190-a3359980-6bab-11ea-8b7b-697d730ae5c1.png
Diffstat (limited to 'bridge/slack')
-rw-r--r-- | bridge/slack/handlers.go | 10 | ||||
-rw-r--r-- | bridge/slack/slack.go | 22 |
2 files changed, 21 insertions, 11 deletions
diff --git a/bridge/slack/handlers.go b/bridge/slack/handlers.go index 12e272d7..015a2e1c 100644 --- a/bridge/slack/handlers.go +++ b/bridge/slack/handlers.go @@ -124,10 +124,16 @@ func (b *Bslack) skipMessageEvent(ev *slack.MessageEvent) bool { } } + // Check for our callback ID + hasOurCallbackID := false + if len(ev.Blocks.BlockSet) == 1 { + block, ok := ev.Blocks.BlockSet[0].(*slack.SectionBlock) + hasOurCallbackID = ok && block.BlockID == "matterbridge_"+b.uuid + } + // Skip any messages that we made ourselves or from 'slackbot' (see #527). if ev.Username == sSlackBotUser || - (b.rtm != nil && ev.Username == b.si.User.Name) || - (len(ev.Attachments) > 0 && ev.Attachments[0].CallbackID == "matterbridge_"+b.uuid) { + (b.rtm != nil && ev.Username == b.si.User.Name) || hasOurCallbackID { return true } diff --git a/bridge/slack/slack.go b/bridge/slack/slack.go index 89ff296c..551e8a78 100644 --- a/bridge/slack/slack.go +++ b/bridge/slack/slack.go @@ -408,7 +408,6 @@ func (b *Bslack) editMessage(msg *config.Message, channelInfo *slack.Channel) (b } messageOptions := b.prepareMessageOptions(msg) for { - messageOptions = append(messageOptions, slack.MsgOptionText(msg.Text, false)) _, _, _, err := b.rtm.UpdateMessage(channelInfo.ID, msg.ID, messageOptions...) if err == nil { return true, nil @@ -427,11 +426,6 @@ func (b *Bslack) postMessage(msg *config.Message, channelInfo *slack.Channel) (s return "", nil } messageOptions := b.prepareMessageOptions(msg) - messageOptions = append( - messageOptions, - slack.MsgOptionText(msg.Text, false), - slack.MsgOptionEnableLinkUnfurl(), - ) for { _, id, err := b.rtm.PostMessage(channelInfo.ID, messageOptions...) if err == nil { @@ -497,9 +491,6 @@ func (b *Bslack) prepareMessageOptions(msg *config.Message) []slack.MsgOption { } var attachments []slack.Attachment - // add a callback ID so we can see we created it - const zeroWidthSpace = "\u200b" - attachments = append(attachments, slack.Attachment{CallbackID: "matterbridge_" + b.uuid, Fallback: zeroWidthSpace}) // add file attachments attachments = append(attachments, b.createAttach(msg.Extra)...) // add slack attachments (from another slack bridge) @@ -510,6 +501,19 @@ func (b *Bslack) prepareMessageOptions(msg *config.Message) []slack.MsgOption { } var opts []slack.MsgOption + opts = append(opts, + // provide regular text field (fallback used in Slack notifications, etc.) + slack.MsgOptionText(msg.Text, false), + + // add a callback ID so we can see we created it + slack.MsgOptionBlocks(slack.NewSectionBlock( + slack.NewTextBlockObject(slack.MarkdownType, msg.Text, false, false), + nil, nil, + slack.SectionBlockOptionBlockID("matterbridge_"+b.uuid), + )), + + slack.MsgOptionEnableLinkUnfurl(), + ) opts = append(opts, slack.MsgOptionAttachments(attachments...)) opts = append(opts, slack.MsgOptionPostMessageParameters(params)) return opts |