From 6ec30f098a081c5126016627c4f93963cc2af5be Mon Sep 17 00:00:00 2001 From: ValdikSS Date: Tue, 8 May 2018 22:42:58 +0300 Subject: [PATCH] Send attached files to XMPP in different message with OOB data and without body Conversations can't show inline pictures if there's anything besides URL in the message body. Workaround this issue by sending one usual message and one message with OOB data and without message body. The second message should not be shown in the clients without OOB support, so the user won't see the empty message. --- bridge/xmpp/xmpp.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bridge/xmpp/xmpp.go b/bridge/xmpp/xmpp.go index 17cadf06..8a066751 100644 --- a/bridge/xmpp/xmpp.go +++ b/bridge/xmpp/xmpp.go @@ -180,6 +180,7 @@ func (b *Bxmpp) replaceAction(text string) (string, bool) { // handleUploadFile handles native upload of files func (b *Bxmpp) handleUploadFile(msg *config.Message) (string, error) { + var urldesc = "" for _, f := range msg.Extra["file"] { fi := f.(config.FileInfo) if fi.Comment != "" { @@ -189,12 +190,16 @@ func (b *Bxmpp) handleUploadFile(msg *config.Message) (string, error) { msg.Text = fi.URL if fi.Comment != "" { msg.Text = fi.Comment + ": " + fi.URL + urldesc = fi.Comment } } _, err := b.xc.Send(xmpp.Chat{Type: "groupchat", Remote: msg.Channel + "@" + b.GetString("Muc"), Text: msg.Username + msg.Text}) if err != nil { return "", err } + if fi.URL != "" { + b.xc.SendOOB(xmpp.Chat{Type: "groupchat", Remote: msg.Channel + "@" + b.GetString("Muc"), Ooburl: fi.URL, Oobdesc: urldesc}) + } } return "", nil }