From 29e355c6abef244a33c4625b0453e791ff13b05f Mon Sep 17 00:00:00 2001 From: ryanzhao Date: Mon, 16 Aug 2021 14:03:06 +1000 Subject: [PATCH] send unsend request as sync message --- .../sending_receiving/MessageSender.kt | 51 ++++++++++--------- 1 file changed, 26 insertions(+), 25 deletions(-) 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 0de835076d..1cb041e915 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 @@ -254,34 +254,35 @@ object MessageSender { fun handleSuccessfulMessageSend(message: Message, destination: Destination, isSyncMessage: Boolean = false, openGroupSentTimestamp: Long = -1) { val storage = MessagingModuleConfiguration.shared.storage val userPublicKey = storage.getUserPublicKey()!! - val messageID = storage.getMessageIdInDatabase(message.sentTimestamp!!, message.sender?:userPublicKey) ?: return // Ignore future self-sends storage.addReceivedMessageTimestamp(message.sentTimestamp!!) - if (openGroupSentTimestamp != -1L && message is VisibleMessage) { - storage.addReceivedMessageTimestamp(openGroupSentTimestamp) - storage.updateSentTimestamp(messageID, message.isMediaMessage(), openGroupSentTimestamp, message.threadID!!) - message.sentTimestamp = openGroupSentTimestamp - } - // When the sync message is successfully sent, the hash value of this TSOutgoingMessage - // will be replaced by the hash value of the sync message. Since the hash value of the - // real message has no use when we delete a message. It is OK to let it be. - message.serverHash?.let { - storage.setMessageServerHash(messageID, it) - } - // Track the open group server message ID - if (message.openGroupServerMessageID != null && destination is Destination.OpenGroupV2) { - val encoded = GroupUtil.getEncodedOpenGroupID("${destination.server}.${destination.room}".toByteArray()) - val threadID = storage.getThreadId(Address.fromSerialized(encoded)) - if (threadID != null && threadID >= 0) { - storage.setOpenGroupServerMessageID(messageID, message.openGroupServerMessageID!!, threadID, !(message as VisibleMessage).isMediaMessage()) + storage.getMessageIdInDatabase(message.sentTimestamp!!, message.sender?:userPublicKey)?.let { messageID -> + if (openGroupSentTimestamp != -1L && message is VisibleMessage) { + storage.addReceivedMessageTimestamp(openGroupSentTimestamp) + storage.updateSentTimestamp(messageID, message.isMediaMessage(), openGroupSentTimestamp, message.threadID!!) + message.sentTimestamp = openGroupSentTimestamp + } + // When the sync message is successfully sent, the hash value of this TSOutgoingMessage + // will be replaced by the hash value of the sync message. Since the hash value of the + // real message has no use when we delete a message. It is OK to let it be. + message.serverHash?.let { + storage.setMessageServerHash(messageID, it) + } + // Track the open group server message ID + if (message.openGroupServerMessageID != null && destination is Destination.OpenGroupV2) { + val encoded = GroupUtil.getEncodedOpenGroupID("${destination.server}.${destination.room}".toByteArray()) + val threadID = storage.getThreadId(Address.fromSerialized(encoded)) + if (threadID != null && threadID >= 0) { + storage.setOpenGroupServerMessageID(messageID, message.openGroupServerMessageID!!, threadID, !(message as VisibleMessage).isMediaMessage()) + } + } + // Mark the message as sent + storage.markAsSent(message.sentTimestamp!!, message.sender?:userPublicKey) + storage.markUnidentified(message.sentTimestamp!!, message.sender?:userPublicKey) + // Start the disappearing messages timer if needed + if (message is VisibleMessage && !isSyncMessage) { + SSKEnvironment.shared.messageExpirationManager.startAnyExpiration(message.sentTimestamp!!, message.sender?:userPublicKey) } - } - // Mark the message as sent - storage.markAsSent(message.sentTimestamp!!, message.sender?:userPublicKey) - storage.markUnidentified(message.sentTimestamp!!, message.sender?:userPublicKey) - // Start the disappearing messages timer if needed - if (message is VisibleMessage && !isSyncMessage) { - SSKEnvironment.shared.messageExpirationManager.startAnyExpiration(message.sentTimestamp!!, message.sender?:userPublicKey) } // Sync the message if: // • it's a visible message