From ab876ca9b84301cd72bc953a42996c78d8d70aa5 Mon Sep 17 00:00:00 2001 From: jubb Date: Thu, 1 Jul 2021 11:20:31 +1000 Subject: [PATCH] fix: MessageSendJob.kt sets message as sending before calling send so conversation adapter doesn't display as error / let users retry while send job is pending --- .../securesms/conversation/v2/ConversationActivityV2.kt | 5 ----- .../session/libsession/messaging/jobs/MessageSendJob.kt | 8 +++++++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt index e2abbff332..1c47e99355 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt @@ -1182,11 +1182,6 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe } message.addSignalAttachments(mmsMessageRecord.slideDeck.asAttachments()) } - val sentTimestamp = message.sentTimestamp - val sender = MessagingModuleConfiguration.shared.storage.getUserPublicKey() - if (sentTimestamp != null && sender != null) { - MessagingModuleConfiguration.shared.storage.markAsSending(sentTimestamp, sender) - } MessageSender.send(message, recipient.address) } endActionMode() diff --git a/libsession/src/main/java/org/session/libsession/messaging/jobs/MessageSendJob.kt b/libsession/src/main/java/org/session/libsession/messaging/jobs/MessageSendJob.kt index b4b04c9ed3..cd19d7f8ca 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/jobs/MessageSendJob.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/jobs/MessageSendJob.kt @@ -36,6 +36,7 @@ class MessageSendJob(val message: Message, val destination: Destination) : Job { override fun execute() { val messageDataProvider = MessagingModuleConfiguration.shared.messageDataProvider val message = message as? VisibleMessage + val storage = MessagingModuleConfiguration.shared.storage if (message != null) { if (!messageDataProvider.isOutgoingMessage(message.sentTimestamp!!)) return // The message has been deleted val attachmentIDs = mutableListOf() @@ -45,7 +46,7 @@ class MessageSendJob(val message: Message, val destination: Destination) : Job { val attachments = attachmentIDs.mapNotNull { messageDataProvider.getDatabaseAttachment(it) } val attachmentsToUpload = attachments.filter { it.url.isNullOrEmpty() } attachmentsToUpload.forEach { - if (MessagingModuleConfiguration.shared.storage.getAttachmentUploadJob(it.attachmentId.rowId) != null) { + if (storage.getAttachmentUploadJob(it.attachmentId.rowId) != null) { // Wait for it to finish } else { val job = AttachmentUploadJob(it.attachmentId.rowId, message.threadID!!.toString(), message, id!!) @@ -57,6 +58,11 @@ class MessageSendJob(val message: Message, val destination: Destination) : Job { return } // Wait for all attachments to upload before continuing } + val sentTimestamp = this.message.sentTimestamp + val sender = storage.getUserPublicKey() + if (sentTimestamp != null && sender != null) { + storage.markAsSending(sentTimestamp, sender) + } val promise = MessageSender.send(this.message, this.destination).success { this.handleSuccess() }.fail { exception ->