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 16fe6221774f5f0ddd0bf3af4f562cf52ee458a1..fb7885bbfc8da1b304719520566529c280102a3b 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 37caf944eb3a4d8d71fe42268f4ad7651a4b4cf3..2ff49efcd4d496063e8fd2f96e9a54f38e8094f1 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>