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:
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"])