From 1e050915efa4e30f33895c9911c094b6cb821b0f Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Mon, 23 Aug 2021 10:00:13 -0400 Subject: [PATCH] Clean up unmigrated groups after recipient merge. --- .../thoughtcrime/securesms/database/RecipientDatabase.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.java index 55cffb40b7..50d4d5163e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.java @@ -2923,12 +2923,17 @@ public class RecipientDatabase extends Database { // Groups GroupDatabase groupDatabase = DatabaseFactory.getGroupDatabase(context); for (GroupDatabase.GroupRecord group : groupDatabase.getGroupsContainingMember(byE164, false, true)) { - List newMembers = new ArrayList<>(group.getMembers()); + LinkedHashSet newMembers = new LinkedHashSet<>(group.getMembers()); newMembers.remove(byE164); + newMembers.add(byUuid); ContentValues groupValues = new ContentValues(); groupValues.put(GroupDatabase.MEMBERS, RecipientId.toSerializedList(newMembers)); db.update(GroupDatabase.TABLE_NAME, groupValues, GroupDatabase.RECIPIENT_ID + " = ?", SqlUtil.buildArgs(group.getRecipientId())); + + if (group.isV2Group()) { + groupDatabase.removeUnmigratedV1Members(group.getId().requireV2(), Collections.singletonList(byE164)); + } } // Threads