diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt index 5fa5c336e5..082fa004ab 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt @@ -1075,25 +1075,26 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat values.putNull(ORIGINAL_MESSAGE_ID) } - writableDatabase.beginTransaction() - val messageId: Long - try { - messageId = writableDatabase.insert(TABLE_NAME, null, values) - if (messageId < 0) { + val messageId: Long = writableDatabase.withinTransaction { + val id = writableDatabase.insert(TABLE_NAME, null, values) + + if (id < 0) { Log.w(TAG, "Failed to insert text message (${message.sentTimestampMillis}, ${message.authorId}, ThreadId::$threadId)! Likely a duplicate.") - return Optional.empty() + } else { + if (unread && editedMessage == null) { + threads.incrementUnread(threadId, 1, 0) + } + + if (message.subscriptionId != -1) { + recipients.setDefaultSubscriptionId(message.authorId, message.subscriptionId) + } } - if (unread && editedMessage == null) { - threads.incrementUnread(threadId, 1, 0) - } + id + } - if (message.subscriptionId != -1) { - recipients.setDefaultSubscriptionId(message.authorId, message.subscriptionId) - } - writableDatabase.setTransactionSuccessful() - } finally { - writableDatabase.endTransaction() + if (messageId < 0) { + return Optional.empty() } if (!silent) {