From 4a8ce784b84c047791bbe76d1e0474bd88e844da Mon Sep 17 00:00:00 2001 From: Harris Date: Fri, 28 May 2021 10:50:07 +1000 Subject: [PATCH 1/3] fix: no longer using the wrong deletion IDs for open group deletions --- .../messaging/open_groups/OpenGroupAPIV2.kt | 13 ++++--------- .../sending_receiving/pollers/OpenGroupPollerV2.kt | 10 +++++----- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupAPIV2.kt b/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupAPIV2.kt index a1bcfe441c..ed8c9fa05a 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupAPIV2.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupAPIV2.kt @@ -17,14 +17,9 @@ import org.session.libsession.messaging.sending_receiving.pollers.OpenGroupPolle import org.session.libsession.snode.OnionRequestAPI import org.session.libsession.utilities.AESGCM import org.session.libsession.utilities.TextSecurePreferences -import org.session.libsignal.utilities.HTTP -import org.session.libsignal.utilities.HTTP.Verb.* -import org.session.libsignal.utilities.removing05PrefixIfNeeded -import org.session.libsignal.utilities.toHexString +import org.session.libsignal.utilities.* import org.session.libsignal.utilities.Base64.* -import org.session.libsignal.utilities.Hex -import org.session.libsignal.utilities.JsonUtil -import org.session.libsignal.utilities.Log +import org.session.libsignal.utilities.HTTP.Verb.* import org.whispersystems.curve25519.Curve25519 import java.util.* @@ -63,7 +58,7 @@ object OpenGroupAPIV2 { @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy::class) data class CompactPollRequest(val roomID: String, val authToken: String, val fromDeletionServerID: Long?, val fromMessageServerID: Long?) - data class CompactPollResult(val messages: List, val deletions: List, val moderators: List) + data class CompactPollResult(val messages: List, val deletions: List, val moderators: List) @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy::class) data class MessageDeletion @@ -402,7 +397,7 @@ object OpenGroupAPIV2 { val messages = parseMessages(roomID, server, rawMessages) roomID to CompactPollResult( messages = messages, - deletions = deletedServerIDs.map { it.deletedMessageId }, + deletions = deletedServerIDs, moderators = moderators ) }.toMap() diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/OpenGroupPollerV2.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/OpenGroupPollerV2.kt index 57ec540da9..3fe4ac525c 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/OpenGroupPollerV2.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/OpenGroupPollerV2.kt @@ -97,15 +97,15 @@ class OpenGroupPollerV2(private val server: String, private val executorService: JobQueue.shared.add(TrimThreadJob(threadId)) } - private fun handleDeletedMessages(room: String, openGroupID: String, deletedMessageServerIDs: List) { + private fun handleDeletedMessages(room: String, openGroupID: String, deletedMessages: List) { val storage = MessagingModuleConfiguration.shared.storage val dataProvider = MessagingModuleConfiguration.shared.messageDataProvider val groupID = GroupUtil.getEncodedOpenGroupID(openGroupID.toByteArray()) val threadID = storage.getThreadId(Address.fromSerialized(groupID)) ?: return - val deletedMessageIDs = deletedMessageServerIDs.mapNotNull { serverID -> - val messageID = dataProvider.getMessageID(serverID, threadID) + val deletedMessageIDs = deletedMessages.mapNotNull { deletion -> + val messageID = dataProvider.getMessageID(deletion.deletedMessageId, threadID) if (messageID == null) { - Log.d("Loki", "Couldn't find message ID for message with serverID: $serverID.") + Log.d("Loki", "Couldn't find message ID for message with serverID: ${deletion.deletedMessageId}.") } messageID } @@ -113,7 +113,7 @@ class OpenGroupPollerV2(private val server: String, private val executorService: MessagingModuleConfiguration.shared.messageDataProvider.deleteMessage(messageId, isSms) } val currentMax = storage.getLastDeletionServerID(room, server) ?: 0L - val latestMax = deletedMessageServerIDs.maxOrNull() ?: 0L + val latestMax = deletedMessages.map { it.id }.maxOrNull() ?: 0L if (latestMax > currentMax && latestMax != 0L) { storage.setLastDeletionServerID(room, server, latestMax) } From c6976ca3cd175bf4180a126ac56ad200360d52ec Mon Sep 17 00:00:00 2001 From: nielsandriesse Date: Fri, 28 May 2021 11:00:49 +1000 Subject: [PATCH 2/3] Fix naming confusion --- .../libsession/messaging/open_groups/OpenGroupAPIV2.kt | 6 +++--- .../sending_receiving/pollers/OpenGroupPollerV2.kt | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupAPIV2.kt b/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupAPIV2.kt index a1bcfe441c..a998f685cb 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupAPIV2.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupAPIV2.kt @@ -67,7 +67,7 @@ object OpenGroupAPIV2 { @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy::class) data class MessageDeletion - @JvmOverloads constructor(val id: Long = 0, val deletedMessageId: Long = 0 + @JvmOverloads constructor(val id: Long = 0, val deletedMessageServerID: Long = 0 ) { companion object { @@ -396,13 +396,13 @@ object OpenGroupAPIV2 { // Deletions val type = TypeFactory.defaultInstance().constructCollectionType(List::class.java, MessageDeletion::class.java) val idsAsString = JsonUtil.toJson(json["deletions"]) - val deletedServerIDs = JsonUtil.fromJson>(idsAsString, type) ?: throw Error.ParsingFailed + val deletions = JsonUtil.fromJson>(idsAsString, type) ?: throw Error.ParsingFailed // Messages val rawMessages = json["messages"] as? List> ?: return@mapNotNull null val messages = parseMessages(roomID, server, rawMessages) roomID to CompactPollResult( messages = messages, - deletions = deletedServerIDs.map { it.deletedMessageId }, + deletions = deletions, moderators = moderators ) }.toMap() diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/OpenGroupPollerV2.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/OpenGroupPollerV2.kt index 57ec540da9..7cfc44801f 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/OpenGroupPollerV2.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/OpenGroupPollerV2.kt @@ -97,15 +97,15 @@ class OpenGroupPollerV2(private val server: String, private val executorService: JobQueue.shared.add(TrimThreadJob(threadId)) } - private fun handleDeletedMessages(room: String, openGroupID: String, deletedMessageServerIDs: List) { + private fun handleDeletedMessages(room: String, openGroupID: String, deletions: List) { val storage = MessagingModuleConfiguration.shared.storage val dataProvider = MessagingModuleConfiguration.shared.messageDataProvider val groupID = GroupUtil.getEncodedOpenGroupID(openGroupID.toByteArray()) val threadID = storage.getThreadId(Address.fromSerialized(groupID)) ?: return - val deletedMessageIDs = deletedMessageServerIDs.mapNotNull { serverID -> - val messageID = dataProvider.getMessageID(serverID, threadID) + val deletedMessageIDs = deletions.mapNotNull { deletion -> + val messageID = dataProvider.getMessageID(deletion.deletedMessageServerID, threadID) if (messageID == null) { - Log.d("Loki", "Couldn't find message ID for message with serverID: $serverID.") + Log.d("Loki", "Couldn't find message ID for message with serverID: ${deletion.deletedMessageServerID}.") } messageID } @@ -113,7 +113,7 @@ class OpenGroupPollerV2(private val server: String, private val executorService: MessagingModuleConfiguration.shared.messageDataProvider.deleteMessage(messageId, isSms) } val currentMax = storage.getLastDeletionServerID(room, server) ?: 0L - val latestMax = deletedMessageServerIDs.maxOrNull() ?: 0L + val latestMax = deletions.map { it.id }.maxOrNull() ?: 0L if (latestMax > currentMax && latestMax != 0L) { storage.setLastDeletionServerID(room, server, latestMax) } From 0ef576da737fb96d63c2ba2e5925030cdc815f11 Mon Sep 17 00:00:00 2001 From: nielsandriesse Date: Fri, 28 May 2021 11:02:55 +1000 Subject: [PATCH 3/3] Update version number --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 02dd1bb594..e92efb42fa 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -143,8 +143,8 @@ dependencies { testImplementation 'org.robolectric:shadows-multidex:4.2' } -def canonicalVersionCode = 177 -def canonicalVersionName = "1.10.9" +def canonicalVersionCode = 178 +def canonicalVersionName = "1.10.10" def postFixSize = 10 def abiPostFix = ['armeabi-v7a' : 1,