Fix thread update race for draft update.

This commit is contained in:
Clark 2023-05-30 10:44:52 -04:00 committed by GitHub
parent c503df5eec
commit 05edc715ef
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1389,6 +1389,8 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa
return false
}
writableDatabase.beginTransaction()
try {
val meaningfulMessages = messages.hasMeaningfulMessage(threadId)
val isPinned by lazy { getPinnedThreadIds().contains(threadId) }
@ -1398,6 +1400,7 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa
if (shouldDelete) {
Log.d(TAG, "Deleting thread $threadId because it has no meaningful messages.")
deleteConversation(threadId)
writableDatabase.setTransactionSuccessful()
return true
} else if (!isPinned) {
return false
@ -1413,9 +1416,8 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa
Log.w(TAG, "Failed to get a conversation snippet for thread $threadId")
if (shouldDelete) {
deleteConversation(threadId)
}
if (isPinned) {
writableDatabase.setTransactionSuccessful()
} else if (isPinned) {
updateThread(
threadId = threadId,
meaningfulMessages = meaningfulMessages,
@ -1431,6 +1433,7 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa
expiresIn = 0,
readReceiptCount = 0
)
writableDatabase.setTransactionSuccessful()
}
return true
} else {
@ -1471,8 +1474,11 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa
if (notifyListeners) {
notifyConversationListListeners()
}
writableDatabase.setTransactionSuccessful()
return false
} finally {
writableDatabase.endTransaction()
}
}
fun updateSnippetTypeSilently(threadId: Long) {