From 1cc0b0ee7d66e9590051dddf4153b24b8139f7ec Mon Sep 17 00:00:00 2001 From: jubb Date: Thu, 20 May 2021 15:43:29 +1000 Subject: [PATCH] refactor: don't delete empty threads if they're open groups --- .../securesms/database/ThreadDatabase.java | 18 +++++++++++++----- .../securesms/groups/GroupManager.java | 4 ---- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java index ea73484659..98a6cf667e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java @@ -513,9 +513,9 @@ public class ThreadDatabase extends Database { MmsSmsDatabase mmsSmsDatabase = DatabaseFactory.getMmsSmsDatabase(context); long count = mmsSmsDatabase.getConversationCount(threadId); + boolean shouldDeleteEmptyThread = deleteThreadOnEmpty(threadId); - - if (count == 0) { + if (count == 0 && shouldDeleteEmptyThread) { deleteThread(threadId); notifyConversationListListeners(); return true; @@ -534,9 +534,12 @@ public class ThreadDatabase extends Database { notifyConversationListListeners(); return false; } else { - deleteThread(threadId); - notifyConversationListListeners(); - return true; + if (shouldDeleteEmptyThread) { + deleteThread(threadId); + notifyConversationListListeners(); + return true; + } + return false; } } finally { if (reader != null) @@ -544,6 +547,11 @@ public class ThreadDatabase extends Database { } } + private boolean deleteThreadOnEmpty(long threadId) { + Recipient threadRecipient = getRecipientForThreadId(threadId); + return threadRecipient != null && !threadRecipient.isOpenGroupRecipient(); + } + private @NonNull String getFormattedBodyFor(@NonNull MessageRecord messageRecord) { if (messageRecord.isMms()) { MmsMessageRecord record = (MmsMessageRecord) messageRecord; diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManager.java b/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManager.java index 0b5b7340d6..8f09dbbbca 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManager.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManager.java @@ -70,10 +70,6 @@ public class GroupManager { final ThreadDatabase threadDatabase = DatabaseFactory.getThreadDatabase(context); final Recipient groupRecipient = Recipient.from(context, Address.fromSerialized(groupId), false); - if (!groupDatabase.getGroup(groupId).isPresent()) { - return false; - } - long threadId = threadDatabase.getThreadIdIfExistsFor(groupRecipient); if (threadId != -1L) { threadDatabase.deleteConversation(threadId);