Fix thread update race for draft update.
This commit is contained in:
parent
c503df5eec
commit
05edc715ef
1 changed files with 79 additions and 73 deletions
|
@ -1389,6 +1389,8 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
writableDatabase.beginTransaction()
|
||||||
|
try {
|
||||||
val meaningfulMessages = messages.hasMeaningfulMessage(threadId)
|
val meaningfulMessages = messages.hasMeaningfulMessage(threadId)
|
||||||
|
|
||||||
val isPinned by lazy { getPinnedThreadIds().contains(threadId) }
|
val isPinned by lazy { getPinnedThreadIds().contains(threadId) }
|
||||||
|
@ -1398,6 +1400,7 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa
|
||||||
if (shouldDelete) {
|
if (shouldDelete) {
|
||||||
Log.d(TAG, "Deleting thread $threadId because it has no meaningful messages.")
|
Log.d(TAG, "Deleting thread $threadId because it has no meaningful messages.")
|
||||||
deleteConversation(threadId)
|
deleteConversation(threadId)
|
||||||
|
writableDatabase.setTransactionSuccessful()
|
||||||
return true
|
return true
|
||||||
} else if (!isPinned) {
|
} else if (!isPinned) {
|
||||||
return false
|
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")
|
Log.w(TAG, "Failed to get a conversation snippet for thread $threadId")
|
||||||
if (shouldDelete) {
|
if (shouldDelete) {
|
||||||
deleteConversation(threadId)
|
deleteConversation(threadId)
|
||||||
}
|
writableDatabase.setTransactionSuccessful()
|
||||||
|
} else if (isPinned) {
|
||||||
if (isPinned) {
|
|
||||||
updateThread(
|
updateThread(
|
||||||
threadId = threadId,
|
threadId = threadId,
|
||||||
meaningfulMessages = meaningfulMessages,
|
meaningfulMessages = meaningfulMessages,
|
||||||
|
@ -1431,6 +1433,7 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa
|
||||||
expiresIn = 0,
|
expiresIn = 0,
|
||||||
readReceiptCount = 0
|
readReceiptCount = 0
|
||||||
)
|
)
|
||||||
|
writableDatabase.setTransactionSuccessful()
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
} else {
|
} else {
|
||||||
|
@ -1471,8 +1474,11 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa
|
||||||
if (notifyListeners) {
|
if (notifyListeners) {
|
||||||
notifyConversationListListeners()
|
notifyConversationListListeners()
|
||||||
}
|
}
|
||||||
|
writableDatabase.setTransactionSuccessful()
|
||||||
return false
|
return false
|
||||||
|
} finally {
|
||||||
|
writableDatabase.endTransaction()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun updateSnippetTypeSilently(threadId: Long) {
|
fun updateSnippetTypeSilently(threadId: Long) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue