From 712385ffd58ad01d1c257b63a7b0299134d95209 Mon Sep 17 00:00:00 2001 From: Tilo Spannagel Date: Mon, 31 Aug 2020 01:49:43 +0200 Subject: [PATCH] Format rich object strings (nctalk) (#1222) Signed-off-by: Tilo Spannagel --- bridge/nctalk/nctalk.go | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/bridge/nctalk/nctalk.go b/bridge/nctalk/nctalk.go index 40836a4f..94bb1a08 100644 --- a/bridge/nctalk/nctalk.go +++ b/bridge/nctalk/nctalk.go @@ -4,6 +4,7 @@ import ( "context" "crypto/tls" "strconv" + "strings" "github.com/42wim/matterbridge/bridge" "github.com/42wim/matterbridge/bridge/config" @@ -78,7 +79,7 @@ func (b *Btalk) JoinChannel(channel config.ChannelInfo) error { continue } remoteMessage := config.Message{ - Text: msg.Message, + Text: formatRichObjectString(msg.Message, msg.MessageParameters), Channel: newRoom.room.Token, Username: msg.ActorDisplayName, UserID: msg.ActorID, @@ -123,3 +124,23 @@ func (b *Btalk) getRoom(token string) *Broom { } return nil } + +// Spec: https://github.com/nextcloud/server/issues/1706#issue-182308785 +func formatRichObjectString(message string, parameters map[string]ocs.RichObjectString) string { + for id, parameter := range parameters { + text := parameter.Name + + switch parameter.Type { + case ocs.ROSTypeUser, ocs.ROSTypeGroup: + text = "@" + text + case ocs.ROSTypeFile: + if parameter.Link != "" { + text = parameter.Link + } + } + + message = strings.ReplaceAll(message, "{"+id+"}", text) + } + + return message +}