summaryrefslogtreecommitdiffstats
path: root/bridge/slack
diff options
context:
space:
mode:
authorQais Patankar <qaisjp@gmail.com>2020-03-21 20:03:12 +0000
committerGitHub <noreply@github.com>2020-03-21 21:03:12 +0100
commitd4acdf2f896f46e78916ba34b3cb942e6b677d7b (patch)
treeaedccd56da4432bff188ff09864d152123af7f40 /bridge/slack
parent0951e75c859e05508b0f2b2306acf963a863d5f9 (diff)
downloadmatterbridge-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.go10
-rw-r--r--bridge/slack/slack.go22
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