diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadTable.kt index 9fb17ebdf1..fe6b67758a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadTable.kt @@ -1059,20 +1059,26 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa } fun deleteConversations(selectedConversations: Set) { - val recipientIdsForThreadIds = getRecipientIdsForThreadIds(selectedConversations) + val recipientIds = getRecipientIdsForThreadIds(selectedConversations) + val queries: List = SqlUtil.buildCollectionQuery(ID, selectedConversations) writableDatabase.withinTransaction { db -> - messages.deleteThreads(selectedConversations) - drafts.clearDrafts(selectedConversations) + for (query in queries) { + db.delete(TABLE_NAME, query.where, query.whereArgs) + } - SqlUtil.buildCollectionQuery(ID, selectedConversations) - .forEach { db.delete(TABLE_NAME, it.where, it.whereArgs) } + messages.deleteAbandonedMessages() + attachments.trimAllAbandonedAttachments() + groupReceipts.deleteAbandonedRows() + mentions.deleteAbandonedMentions() + drafts.clearDrafts(selectedConversations) + attachments.deleteAbandonedAttachmentFiles() } notifyConversationListListeners() notifyConversationListeners(selectedConversations) ApplicationDependencies.getDatabaseObserver().notifyConversationDeleteListeners(selectedConversations) - ConversationUtil.clearShortcuts(context, recipientIdsForThreadIds) + ConversationUtil.clearShortcuts(context, recipientIds) } fun deleteAllConversations() {