From 246eb62958eb67a353e7ec21ce6b75878643a77b Mon Sep 17 00:00:00 2001 From: Ryan ZHAO Date: Wed, 20 Jan 2021 16:37:02 +1100 Subject: [PATCH] message sender failed with error --- .../org/thoughtcrime/securesms/database/Storage.kt | 12 ++++++++++-- .../session/libsession/messaging/StorageProtocol.kt | 2 +- .../messaging/sending_receiving/MessageSender.kt | 4 +++- 3 files changed, 14 insertions(+), 4 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 fbc884f20..205b6f39a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt @@ -287,8 +287,16 @@ class Storage(context: Context, helper: SQLCipherOpenHelper) : Database(context, } } - override fun setErrorMessage(message: Message, error: Exception) { - TODO("Not yet implemented") + override fun setErrorMessage(messageID: Long, error: Exception) { + val database = DatabaseFactory.getMmsSmsDatabase(context) + val messageRecord = database.getMessageFor(messageID) ?: return + if (messageRecord.isMms) { + val mmsDatabase = DatabaseFactory.getMmsDatabase(context) + mmsDatabase.markAsSentFailed(messageID) + } else { + val smsDatabase = DatabaseFactory.getSmsDatabase(context) + smsDatabase.markAsSentFailed(messageID) + } } override fun getGroup(groupID: String): GroupRecord? { 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 6bde0bbbc..ef1d5d442 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/StorageProtocol.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/StorageProtocol.kt @@ -92,7 +92,7 @@ interface StorageProtocol { fun setOpenGroupServerMessageID(messageID: Long, serverID: Long) fun markAsSent(messageID: Long) fun markUnidentified(messageID: Long) - fun setErrorMessage(message: Message, error: Exception) + fun setErrorMessage(messageID: Long, error: Exception) // Closed Groups fun getGroup(groupID: String): GroupRecord? 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 bfaaad0ee..f9e69373a 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 @@ -272,6 +272,8 @@ object MessageSender { } fun handleFailedMessageSend(message: Message, error: Exception) { - MessagingConfiguration.shared.storage.setErrorMessage(message, error) + val storage = MessagingConfiguration.shared.storage + val messageId = storage.getMessageIdInDatabase(message.sentTimestamp!!, message.sender!!) ?: return + storage.setErrorMessage(messageId, error) } } \ No newline at end of file