Format rich object strings (nctalk) (#1222)

Signed-off-by: Tilo Spannagel <development@tilosp.de>
This commit is contained in:
Tilo Spannagel 2020-08-31 01:49:43 +02:00 committed by GitHub
parent ad90cf09fe
commit 712385ffd5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -4,6 +4,7 @@ import (
"context" "context"
"crypto/tls" "crypto/tls"
"strconv" "strconv"
"strings"
"github.com/42wim/matterbridge/bridge" "github.com/42wim/matterbridge/bridge"
"github.com/42wim/matterbridge/bridge/config" "github.com/42wim/matterbridge/bridge/config"
@ -78,7 +79,7 @@ func (b *Btalk) JoinChannel(channel config.ChannelInfo) error {
continue continue
} }
remoteMessage := config.Message{ remoteMessage := config.Message{
Text: msg.Message, Text: formatRichObjectString(msg.Message, msg.MessageParameters),
Channel: newRoom.room.Token, Channel: newRoom.room.Token,
Username: msg.ActorDisplayName, Username: msg.ActorDisplayName,
UserID: msg.ActorID, UserID: msg.ActorID,
@ -123,3 +124,23 @@ func (b *Btalk) getRoom(token string) *Broom {
} }
return nil 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
}