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 da8db56761..0f449c9f3a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt @@ -379,9 +379,9 @@ class Storage(context: Context, helper: SQLCipherOpenHelper) : Database(context, SessionMetaProtocol.addTimestamp(timestamp) } -// override fun removeReceivedMessageTimestamps(timestamps: Set) { -// TODO("Not yet implemented") -// } + override fun removeReceivedMessageTimestamps(timestamps: Set) { + SessionMetaProtocol.removeTimestamps(timestamps) + } override fun getMessageIdInDatabase(timestamp: Long, author: String): Long? { val database = DatabaseFactory.getMmsSmsDatabase(context) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java index 258070f4b2..1ebfa6146b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java @@ -49,6 +49,7 @@ import org.thoughtcrime.securesms.database.model.MediaMmsMessageRecord; import org.thoughtcrime.securesms.database.model.MessageRecord; import org.thoughtcrime.securesms.database.model.MmsMessageRecord; import org.thoughtcrime.securesms.database.model.ThreadRecord; +import org.thoughtcrime.securesms.loki.protocol.SessionMetaProtocol; import org.thoughtcrime.securesms.mms.Slide; import org.thoughtcrime.securesms.mms.SlideDeck; @@ -410,6 +411,7 @@ public class ThreadDatabase extends Database { deleteThread(threadId); notifyConversationListeners(threadId); notifyConversationListListeners(); + SessionMetaProtocol.clearReceivedMessages(); } public boolean hasThread(long threadId) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/loki/protocol/SessionMetaProtocol.kt b/app/src/main/java/org/thoughtcrime/securesms/loki/protocol/SessionMetaProtocol.kt index ded1b933c2..efc83d0812 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/loki/protocol/SessionMetaProtocol.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/loki/protocol/SessionMetaProtocol.kt @@ -24,6 +24,15 @@ object SessionMetaProtocol { timestamps.add(timestamp) } + @JvmStatic + fun clearReceivedMessages() { + timestamps.clear() + } + + fun removeTimestamps(timestamps: Set) { + this.timestamps.removeAll(timestamps) + } + @JvmStatic fun shouldIgnoreMessage(timestamp: Long): Boolean { val shouldIgnoreMessage = timestamps.contains(timestamp) diff --git a/libsession/src/main/java/org/session/libsession/messaging/StorageProtocol.kt b/libsession/src/main/java/org/session/libsession/messaging/StorageProtocol.kt index c443b2f551..f64aa1a032 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/StorageProtocol.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/StorageProtocol.kt @@ -95,7 +95,7 @@ interface StorageProtocol { fun isMessageDuplicated(timestamp: Long, sender: String): Boolean fun getReceivedMessageTimestamps(): Set fun addReceivedMessageTimestamp(timestamp: Long) -// fun removeReceivedMessageTimestamps(timestamps: Set) + fun removeReceivedMessageTimestamps(timestamps: Set) // Returns the IDs of the saved attachments. fun persistAttachments(messageId: Long, attachments: List): List fun getAttachmentsForMessage(messageId: Long): List diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt index 7344478ae7..84afeff63b 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt @@ -287,7 +287,7 @@ object MessageSender { val userPublicKey = storage.getUserPublicKey()!! val messageId = storage.getMessageIdInDatabase(message.sentTimestamp!!, message.sender?:userPublicKey) ?: return // Ignore future self-sends -// storage.addReceivedMessageTimestamp(message.sentTimestamp!!) + storage.addReceivedMessageTimestamp(message.sentTimestamp!!) // Track the open group server message ID if (message.openGroupServerMessageID != null && destination is Destination.OpenGroupV2) { val encoded = GroupUtil.getEncodedOpenGroupID("${destination.server}.${destination.room}".toByteArray())