diff --git a/portal.go b/portal.go index bee936ff..d6d5322f 100644 --- a/portal.go +++ b/portal.go @@ -3434,12 +3434,6 @@ func (portal *Portal) uploadMedia(intent *appservice.IntentAPI, data []byte, con if file != nil { file.URL = mxc.CUString() content.File = file - // Sticker events require the URL field to be present https://spec.matrix.org/v1.9/client-server-api/#events-16 - // This seems to affect only clients based on the Rust SDK on encrypted channels (like Element X) - isSticker := string(content.MsgType) == event.EventSticker.Type - if isSticker { - content.URL = mxc.CUString() - } } else { content.URL = mxc.CUString() } @@ -3506,6 +3500,13 @@ func (portal *Portal) convertMediaMessage(intent *appservice.IntentAPI, source * return portal.makeMediaBridgeFailureMessage(info, fmt.Errorf("failed to upload media: %w", err), converted, nil, "") } } + + // Sticker events require the URL field to be present https://spec.matrix.org/v1.9/client-server-api/#events-16 + // This seems to affect only clients based on the Rust SDK on encrypted channels (like Element X) + if typeName == "sticker" && converted.Content.File != nil { + converted.Content.URL = converted.Content.File.URL + } + return converted }