diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java index f31e2d5ffc..654739628f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java @@ -1269,8 +1269,10 @@ public class ConversationListFragment extends MainFragment implements ActionMode @Override protected Void doInBackground(Void... params) { + Log.d(TAG, "[handleDelete] Deleting " + selectedConversations.size() + " chats"); SignalDatabase.threads().deleteConversations(selectedConversations, true); AppDependencies.getMessageNotifier().updateNotification(requireActivity()); + Log.d(TAG, "[handleDelete] Delete complete"); return null; } 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 ba7d1b1c10..f04f312467 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadTable.kt @@ -1261,11 +1261,13 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa } fun deleteConversations(selectedConversations: Set, syncThreadDeletes: Boolean = true) { + Log.d(TAG, "[deleteConversations] Deleting ${selectedConversations.size} chats syncThreadDeletes: $syncThreadDeletes") val recipientIds = getRecipientIdsForThreadIds(selectedConversations) val addressableMessages = mutableListOf() val queries: List = SqlUtil.buildCollectionQuery(ID, selectedConversations) + Log.d(TAG, "[deleteConversations] Enter transaction") writableDatabase.withinTransaction { db -> if (syncThreadDeletes) { for (threadId in selectedConversations) { @@ -1278,17 +1280,27 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa addressableMessages += ThreadDeleteSyncInfo(threadId, mostRecentMessages, mostRecentNonExpiring) } + Log.d(TAG, "[deleteConversations] Retrieved sync thread delete addressable messages (${addressableMessages.size})") + } else { + Log.d(TAG, "[deleteConversations] No addressable messages needed") } + Log.d(TAG, "[deleteConversations] Deactivating threads") for (query in queries) { db.deactivateThread(query) } + Log.d(TAG, "[deleteConversations] Deleting messages in thread") messages.deleteMessagesInThread(selectedConversations) + Log.d(TAG, "[deleteConversations] Trimming attachments") attachments.trimAllAbandonedAttachments() + Log.d(TAG, "[deleteConversations] Deleting abandoned group receipts") groupReceipts.deleteAbandonedRows() + Log.d(TAG, "[deleteConversations] Deleting abandoned mentions") mentions.deleteAbandonedMentions() + Log.d(TAG, "[deleteConversations] Clearing drafts") drafts.clearDrafts(selectedConversations) + Log.d(TAG, "[deleteConversations] Updating threadId cache") synchronized(threadIdCache) { for (recipientId in recipientIds) { threadIdCache.remove(recipientId) @@ -1296,6 +1308,7 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa } } + Log.d(TAG, "[deleteConversations] Enqueue jobs and notify listeners") DeleteAbandonedAttachmentsJob.enqueue() if (syncThreadDeletes) {