commit 699da4974300df5ea23c846469ec7a6f67be5679
parent 0d3bffb05bc14af3dab21a05ad2795876e34dfc5
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date:   Thu, 21 Dec 2023 22:44:13 +0100

fix(core/media_downloader): missing attachments

Diffstat:
Mcore/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/downloader/MediaDownloader.kt | 19+++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/downloader/MediaDownloader.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/downloader/MediaDownloader.kt @@ -549,11 +549,26 @@ class MediaDownloader : MessagingRuleFeature("MediaDownloader", MessagingRuleTyp val friendInfo: FriendInfo = context.database.getFriendInfo(message.senderId!!) ?: throw Exception("Friend not found in database") val authorName = friendInfo.usernameForSorting!! - val decodedAttachments = messageLogger.takeIf { it.isEnabled }?.getMessageObject(message.clientConversationId!!, message.clientMessageId.toLong())?.let { + val decodedAttachments = (messageLogger.takeIf { it.isEnabled }?.getMessageObject(message.clientConversationId!!, message.clientMessageId.toLong())?.let { MessageDecoder.decode(it.getAsJsonObject("mMessageContent")) } ?: MessageDecoder.decode( protoReader = ProtoReader(message.messageContent!!) - ) + )).toMutableList() + + context.feature(Messaging::class).conversationManager?.takeIf { + decodedAttachments.isEmpty() + }?.also { conversationManager -> + runBlocking { + suspendCoroutine { continuation -> + conversationManager.fetchMessage(message.clientConversationId!!, message.clientMessageId.toLong(), onSuccess = { message -> + decodedAttachments.addAll(MessageDecoder.decode(message.messageContent!!)) + continuation.resumeWith(Result.success(Unit)) + }, onError = { + continuation.resumeWith(Result.success(Unit)) + }) + } + } + } if (decodedAttachments.isEmpty()) { context.shortToast(translations["no_attachments_toast"])