From 2f551ee3f23e5a10b753b4f5235843281fa4303e Mon Sep 17 00:00:00 2001 From: Cody Henthorne <cody@signal.org> Date: Thu, 21 Apr 2022 11:30:13 -0400 Subject: [PATCH] Do not auto-leave groups you have requested to join. --- .../groups/v2/processing/GroupsV2StateProcessor.java | 2 +- .../signalservice/api/groupsv2/DecryptedGroupUtil.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/v2/processing/GroupsV2StateProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/groups/v2/processing/GroupsV2StateProcessor.java index 16fe622177..fb7885bbfc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/v2/processing/GroupsV2StateProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/v2/processing/GroupsV2StateProcessor.java @@ -586,7 +586,7 @@ public class GroupsV2StateProcessor { Log.i(TAG, String.format("Added as a full member of %s by %s", groupId, addedBy.getId())); - if (addedBy.isBlocked()) { + if (addedBy.isBlocked() && (inputGroupState.getLocalState() == null || !DecryptedGroupUtil.isRequesting(inputGroupState.getLocalState(), selfAci.uuid()))) { Log.i(TAG, "Added by a blocked user. Leaving group."); ApplicationDependencies.getJobManager().add(new LeaveGroupV2Job(groupId)); //noinspection UnnecessaryReturnStatement diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/groupsv2/DecryptedGroupUtil.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/groupsv2/DecryptedGroupUtil.java index 37caf944eb..2ff49efcd4 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/groupsv2/DecryptedGroupUtil.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/groupsv2/DecryptedGroupUtil.java @@ -232,6 +232,10 @@ public final class DecryptedGroupUtil { findRequestingByUuid(group.getRequestingMembersList(), uuid).isPresent(); } + public static boolean isRequesting(DecryptedGroup group, UUID uuid) { + return findRequestingByUuid(group.getRequestingMembersList(), uuid).isPresent(); + } + /** * Removes the uuid from the full members of a group. * <p> -- GitLab