Fix bug when processing duplicate text messages within the same batch.

This commit is contained in:
Cody Henthorne
2023-06-09 14:30:06 -04:00
parent b55181ffe6
commit db7056c53b

View File

@@ -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) {