From 56551025e9926974cd83183b87d63bfb4e6971f1 Mon Sep 17 00:00:00 2001 From: Alan Evans Date: Tue, 26 May 2020 16:05:18 -0300 Subject: [PATCH] Detect if group v2 is active from membership. --- .../thoughtcrime/securesms/database/GroupDatabase.java | 3 +++ .../database/model/GroupsV2UpdateMessageProducer.java | 6 +++--- .../thoughtcrime/securesms/groups/GroupManagerV2.java | 9 ++------- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/GroupDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/GroupDatabase.java index 1ea674b243..b482fcc36c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/GroupDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/GroupDatabase.java @@ -391,11 +391,14 @@ public final class GroupDatabase extends Database { RecipientId groupRecipientId = recipientDatabase.getOrInsertFromGroupId(groupId); String title = decryptedGroup.getTitle(); ContentValues contentValues = new ContentValues(); + UUID uuid = Recipient.self().getUuid().get(); contentValues.put(TITLE, title); contentValues.put(V2_REVISION, decryptedGroup.getVersion()); contentValues.put(V2_DECRYPTED_GROUP, decryptedGroup.toByteArray()); contentValues.put(MEMBERS, serializeV2GroupMembers(decryptedGroup)); + contentValues.put(ACTIVE, DecryptedGroupUtil.findMemberByUuid(decryptedGroup.getMembersList(), uuid).isPresent() || + DecryptedGroupUtil.findPendingByUuid(decryptedGroup.getPendingMembersList(), uuid).isPresent() ? 1 : 0); databaseHelper.getWritableDatabase().update(TABLE_NAME, contentValues, GROUP_ID + " = ?", diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/model/GroupsV2UpdateMessageProducer.java b/app/src/main/java/org/thoughtcrime/securesms/database/model/GroupsV2UpdateMessageProducer.java index 9fcff9449f..a4157f2b5d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/model/GroupsV2UpdateMessageProducer.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/model/GroupsV2UpdateMessageProducer.java @@ -140,16 +140,16 @@ final class GroupsV2UpdateMessageProducer { boolean editorIsYou = change.getEditor().equals(selfUuidBytes); for (ByteString member : change.getDeleteMembersList()) { - boolean newMemberIsYou = member.equals(selfUuidBytes); + boolean removedMemberIsYou = member.equals(selfUuidBytes); if (editorIsYou) { - if (newMemberIsYou) { + if (removedMemberIsYou) { updates.add(context.getString(R.string.MessageRecord_you_left_the_group)); } else { updates.add(context.getString(R.string.MessageRecord_you_removed_s, describe(member))); } } else { - if (newMemberIsYou) { + if (removedMemberIsYou) { updates.add(context.getString(R.string.MessageRecord_s_removed_you_from_the_group, describe(change.getEditor()))); } else { if (member.equals(change.getEditor())) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManagerV2.java b/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManagerV2.java index fc5e9394c0..341c0f3091 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManagerV2.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManagerV2.java @@ -264,14 +264,9 @@ final class GroupManagerV2 { @NonNull GroupManager.GroupActionResult ejectMember(@NonNull RecipientId recipientId) throws GroupChangeFailedException, GroupInsufficientRightsException, IOException, GroupNotAMemberException { - Recipient recipient = Recipient.resolved(recipientId); - GroupManager.GroupActionResult result = commitChangeWithConflictResolution(groupOperations.createRemoveMembersChange(Collections.singleton(recipient.getUuid().get()))); + Recipient recipient = Recipient.resolved(recipientId); - if (recipient.isLocalNumber()) { - groupDatabase.setActive(groupId, false); - } - - return result; + return commitChangeWithConflictResolution(groupOperations.createRemoveMembersChange(Collections.singleton(recipient.getUuid().get()))); } @WorkerThread