From fad8cd5ba67ca345d12d4814f2d28c48056c495c Mon Sep 17 00:00:00 2001 From: jubb Date: Tue, 23 Mar 2021 15:56:15 +1100 Subject: [PATCH] fix: changing the way received timestamp handling happens --- .../java/org/thoughtcrime/securesms/database/Storage.kt | 7 +------ .../messaging/sending_receiving/MessageReceiver.kt | 2 +- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt b/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt index 8c47ad6728..610bde1bed 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt @@ -274,12 +274,7 @@ class Storage(context: Context, helper: SQLCipherOpenHelper) : Database(context, } override fun isMessageDuplicated(timestamp: Long, sender: String): Boolean { - val database = DatabaseFactory.getMmsSmsDatabase(context) - return if (sender.isEmpty()) { - database.getMessageForTimestamp(timestamp) != null - } else { - database.getMessageFor(timestamp, sender) != null - } + return getReceivedMessageTimestamps().contains(timestamp) } override fun setUserCount(group: Long, server: String, newValue: Int) { diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiver.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiver.kt index 98865851f6..89cc060ec1 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiver.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiver.kt @@ -52,7 +52,6 @@ object MessageReceiver { // will already be in the database but we don't want to treat the message as a duplicate. The isRetry flag is a simple workaround // for this issue. if (storage.isMessageDuplicated(envelope.timestamp, GroupUtil.doubleEncodeGroupID(envelope.source)) && !isRetry) throw Error.DuplicateMessage - storage.addReceivedMessageTimestamp(envelope.timestamp) // Decrypt the contents val ciphertext = envelope.content ?: throw Error.NoData var plaintext: ByteArray? = null @@ -101,6 +100,7 @@ object MessageReceiver { } // Don't process the envelope any further if the message has been handled already if (storage.isMessageDuplicated(envelope.timestamp, sender!!) && !isRetry) throw Error.DuplicateMessage + storage.addReceivedMessageTimestamp(envelope.timestamp) // Don't process the envelope any further if the sender is blocked if (isBlock(sender!!)) throw Error.SenderBlocked // Parse the proto