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);