From 9137cdfc68eb1e4fd5e643fc8742903d2bfd4ffb Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Sat, 2 Sep 2023 12:09:59 +0300 Subject: [PATCH] Fall back to second media ID field if first is empty --- portal.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/portal.go b/portal.go index 400440b..f1085ed 100644 --- a/portal.go +++ b/portal.go @@ -341,7 +341,7 @@ func (portal *Portal) isOutgoingMessage(msg *gmproto.Message) *database.Message func hasInProgressMedia(msg *gmproto.Message) bool { for _, part := range msg.MessageInfo { media, ok := part.GetData().(*gmproto.MessageInfo_MediaContent) - if ok && media.MediaContent.GetMediaID() == "" { + if ok && media.MediaContent.GetMediaID() == "" && media.MediaContent.GetMediaID2() == "" { return true } } @@ -926,7 +926,7 @@ func (portal *Portal) convertGoogleMessage(ctx context.Context, source *User, ev downloadStatus = "" } case *gmproto.MessageInfo_MediaContent: - if data.MediaContent.MediaID == "" { + if data.MediaContent.MediaID == "" && data.MediaContent.MediaID2 == "" { pendingMedia = true content = event.MessageEventContent{ MsgType: event.MsgNotice, @@ -1104,7 +1104,13 @@ func (msg *ConvertedMessage) MergeCaption() { func (portal *Portal) convertGoogleMedia(source *User, intent *appservice.IntentAPI, msg *gmproto.MediaContent) (*event.MessageEventContent, error) { var data []byte var err error - data, err = source.Client.DownloadMedia(msg.MediaID, msg.DecryptionKey) + if msg.MediaID != "" { + data, err = source.Client.DownloadMedia(msg.MediaID, msg.DecryptionKey) + } else if msg.MediaID2 != "" { + data, err = source.Client.DownloadMedia(msg.MediaID2, msg.DecryptionKey2) + } else { + err = fmt.Errorf("no media ID found") + } if err != nil { return nil, err }