From 0292e702462e75a9997bdbc76e21ece5215f797c Mon Sep 17 00:00:00 2001 From: Brice-W Date: Tue, 30 Mar 2021 13:09:40 +1100 Subject: [PATCH] fix quote attachment issue --- .../securesms/attachments/DatabaseAttachmentProvider.kt | 4 ++-- .../org/session/libsession/database/MessageDataProvider.kt | 2 +- .../messaging/sending_receiving/MessageReceiverHandler.kt | 7 ++++--- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/attachments/DatabaseAttachmentProvider.kt b/app/src/main/java/org/thoughtcrime/securesms/attachments/DatabaseAttachmentProvider.kt index 105cabf37b..963b6c1299 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/attachments/DatabaseAttachmentProvider.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/attachments/DatabaseAttachmentProvider.kt @@ -66,10 +66,10 @@ class DatabaseAttachmentProvider(context: Context, helper: SQLCipherOpenHelper) attachmentDatabase.setTransferState(messageID, AttachmentId(attachmentId, 0), attachmentState.value) } - override fun getMessageForQuote(timestamp: Long, author: Address): Long? { + override fun getMessageForQuote(timestamp: Long, author: Address): Pair? { val messagingDatabase = DatabaseFactory.getMmsSmsDatabase(context) val message = messagingDatabase.getMessageFor(timestamp, author) - return message?.id + return if (message != null) Pair(message.id, message.isMms) else null } override fun getAttachmentsAndLinkPreviewFor(mmsId: Long): List { diff --git a/libsession/src/main/java/org/session/libsession/database/MessageDataProvider.kt b/libsession/src/main/java/org/session/libsession/database/MessageDataProvider.kt index 66fcb15f7b..d3065e5772 100644 --- a/libsession/src/main/java/org/session/libsession/database/MessageDataProvider.kt +++ b/libsession/src/main/java/org/session/libsession/database/MessageDataProvider.kt @@ -31,7 +31,7 @@ interface MessageDataProvider { fun updateAttachmentAfterUploadFailed(attachmentId: Long) // Quotes - fun getMessageForQuote(timestamp: Long, author: Address): Long? + fun getMessageForQuote(timestamp: Long, author: Address): Pair? fun getAttachmentsAndLinkPreviewFor(mmsId: Long): List fun getMessageBodyFor(timestamp: Long, author: String): String diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiverHandler.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiverHandler.kt index 647cb094d2..8245116dca 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiverHandler.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiverHandler.kt @@ -29,6 +29,7 @@ import org.session.libsignal.service.loki.utilities.toHexString import org.session.libsignal.utilities.logging.Log import java.security.MessageDigest import java.util.* +import kotlin.collections.ArrayList internal fun MessageReceiver.isBlock(publicKey: String): Boolean { val context = MessagingConfiguration.shared.context @@ -139,9 +140,9 @@ fun MessageReceiver.handleVisibleMessage(message: VisibleMessage, proto: SignalS if (message.quote != null && proto.dataMessage.hasQuote()) { val quote = proto.dataMessage.quote val author = Address.fromSerialized(quote.author) - val messageID = MessagingConfiguration.shared.messageDataProvider.getMessageForQuote(quote.id, author) - if (messageID != null) { - val attachments = MessagingConfiguration.shared.messageDataProvider.getAttachmentsAndLinkPreviewFor(messageID) + val messageInfo = MessagingConfiguration.shared.messageDataProvider.getMessageForQuote(quote.id, author) + if (messageInfo != null) { + val attachments = if (messageInfo.second) MessagingConfiguration.shared.messageDataProvider.getAttachmentsAndLinkPreviewFor(messageInfo.first) else ArrayList() quoteModel = QuoteModel(quote.id, author, MessagingConfiguration.shared.messageDataProvider.getMessageBodyFor(quote.id, quote.author), false, attachments) } else { quoteModel = QuoteModel(quote.id, author, quote.text, true, PointerAttachment.forPointers(proto.dataMessage.quote.attachmentsList))