Reduce db operations when updating thread snippet.

This commit is contained in:
Clark
2023-05-12 12:10:14 -04:00
committed by Greyson Parrelli
parent 7c37f929a5
commit fe8b2cb761
3 changed files with 24 additions and 17 deletions

View File

@@ -1084,14 +1084,25 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
values.putNull(ORIGINAL_MESSAGE_ID)
}
val messageId = writableDatabase.insert(TABLE_NAME, null, values)
if (messageId < 0) {
Log.w(TAG, "Failed to insert text message (${message.sentTimestampMillis}, ${message.authorId}, ThreadId::$threadId)! Likely a duplicate.")
return Optional.empty()
}
writableDatabase.beginTransaction()
val messageId: Long
try {
messageId = writableDatabase.insert(TABLE_NAME, null, values)
if (messageId < 0) {
Log.w(TAG, "Failed to insert text message (${message.sentTimestampMillis}, ${message.authorId}, ThreadId::$threadId)! Likely a duplicate.")
return Optional.empty()
}
if (unread && editedMessage == null) {
threads.incrementUnread(threadId, 1, 0)
if (unread && editedMessage == null) {
threads.incrementUnread(threadId, 1, 0)
}
if (message.subscriptionId != -1) {
recipients.setDefaultSubscriptionId(recipient.id, message.subscriptionId)
}
writableDatabase.setTransactionSuccessful()
} finally {
writableDatabase.endTransaction()
}
if (!silent) {
@@ -1099,10 +1110,6 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
TrimThreadJob.enqueueAsync(threadId)
}
if (message.subscriptionId != -1) {
recipients.setDefaultSubscriptionId(recipient.id, message.subscriptionId)
}
if (notifyObservers) {
notifyConversationListeners(threadId)
}

View File

@@ -1386,8 +1386,8 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa
val meaningfulMessages = messages.hasMeaningfulMessage(threadId)
val isPinned = getPinnedThreadIds().contains(threadId)
val shouldDelete = allowDeletion && !isPinned && !messages.containsStories(threadId)
val isPinned by lazy { getPinnedThreadIds().contains(threadId) }
val shouldDelete by lazy { allowDeletion && !isPinned && !messages.containsStories(threadId) }
if (!meaningfulMessages) {
if (shouldDelete) {