mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-20 00:29:11 +01:00
Fix bug when processing duplicate text messages within the same batch.
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user