Thumbnail

rani/matterbridge.git

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

commit 18f7cefef09bbf5b5a7b477c4e47d13263029038 Author: Qais Patankar <qaisjp@gmail.com> Date: Sat Mar 21 20:03:12 2020 +0000 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 diff --git a/bridge/slack/handlers.go b/bridge/slack/handlers.go index 12e272d..015a2e1 100644 --- a/bridge/slack/handlers.go +++ b/bridge/slack/handlers.go @@ -12410 +12416 @@ 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 89ff296..551e8a7 100644 --- a/bridge/slack/slack.go +++ b/bridge/slack/slack.go @@ -4087 +4086 @@ 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 @@ -42711 +4266 @@ 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 { @@ -4979 +4916 @@ 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) @@ -5106 +50119 @@ 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