Improve delete thread performance.

This commit is contained in:
Cody Henthorne 2023-03-14 13:52:00 -04:00 committed by Greyson Parrelli
parent 431e366e76
commit 59141bc6a4

View file

@ -1059,20 +1059,26 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa
} }
fun deleteConversations(selectedConversations: Set<Long>) { fun deleteConversations(selectedConversations: Set<Long>) {
val recipientIdsForThreadIds = getRecipientIdsForThreadIds(selectedConversations) val recipientIds = getRecipientIdsForThreadIds(selectedConversations)
val queries: List<SqlUtil.Query> = SqlUtil.buildCollectionQuery(ID, selectedConversations)
writableDatabase.withinTransaction { db -> writableDatabase.withinTransaction { db ->
messages.deleteThreads(selectedConversations) for (query in queries) {
drafts.clearDrafts(selectedConversations) db.delete(TABLE_NAME, query.where, query.whereArgs)
}
SqlUtil.buildCollectionQuery(ID, selectedConversations) messages.deleteAbandonedMessages()
.forEach { db.delete(TABLE_NAME, it.where, it.whereArgs) } attachments.trimAllAbandonedAttachments()
groupReceipts.deleteAbandonedRows()
mentions.deleteAbandonedMentions()
drafts.clearDrafts(selectedConversations)
attachments.deleteAbandonedAttachmentFiles()
} }
notifyConversationListListeners() notifyConversationListListeners()
notifyConversationListeners(selectedConversations) notifyConversationListeners(selectedConversations)
ApplicationDependencies.getDatabaseObserver().notifyConversationDeleteListeners(selectedConversations) ApplicationDependencies.getDatabaseObserver().notifyConversationDeleteListeners(selectedConversations)
ConversationUtil.clearShortcuts(context, recipientIdsForThreadIds) ConversationUtil.clearShortcuts(context, recipientIds)
} }
fun deleteAllConversations() { fun deleteAllConversations() {