From: AsamK Date: Fri, 7 Oct 2022 17:49:43 +0000 (+0200) Subject: Implement refuse group join requests X-Git-Tag: v0.11.4~28 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/c9c8af42c25bc925e510c61742c7827008434676 Implement refuse group join requests --- diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/GroupHelper.java b/lib/src/main/java/org/asamk/signal/manager/helper/GroupHelper.java index 3f8740d9..be57d19b 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/GroupHelper.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/GroupHelper.java @@ -618,6 +618,12 @@ public class GroupHelper { var groupGroupChangePair = groupV2Helper.revokeInvitedMembers(group, pendingRemoveMembers); result = sendUpdateGroupV2Message(group, groupGroupChangePair.first(), groupGroupChangePair.second()); } + var requestingRemoveMembers = new HashSet<>(removeMembers); + requestingRemoveMembers.retainAll(group.getRequestingMembers()); + if (requestingRemoveMembers.size() > 0) { + var groupGroupChangePair = groupV2Helper.refuseJoinRequestMembers(group, requestingRemoveMembers); + result = sendUpdateGroupV2Message(group, groupGroupChangePair.first(), groupGroupChangePair.second()); + } } if (admins != null) { diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/GroupV2Helper.java b/lib/src/main/java/org/asamk/signal/manager/helper/GroupV2Helper.java index b59eddcc..dd75a8f2 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/GroupV2Helper.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/GroupV2Helper.java @@ -287,6 +287,17 @@ class GroupV2Helper { return ejectMembers(groupInfoV2, memberUuids); } + Pair refuseJoinRequestMembers( + GroupInfoV2 groupInfoV2, Set members + ) throws IOException { + final var memberUuids = members.stream() + .map(context.getRecipientHelper()::resolveSignalServiceAddress) + .map(SignalServiceAddress::getServiceId) + .map(ServiceId::uuid) + .collect(Collectors.toSet()); + return refuseJoinRequest(groupInfoV2, memberUuids); + } + Pair revokeInvitedMembers( GroupInfoV2 groupInfoV2, Set members ) throws IOException { @@ -513,6 +524,13 @@ class GroupV2Helper { return commitChange(groupInfoV2, groupOperations.createRemoveInvitationChange(uuidCipherTexts)); } + private Pair refuseJoinRequest( + GroupInfoV2 groupInfoV2, Set uuids + ) throws IOException { + final GroupsV2Operations.GroupOperations groupOperations = getGroupOperations(groupInfoV2); + return commitChange(groupInfoV2, groupOperations.createRefuseGroupJoinRequest(uuids, false, List.of())); + } + private Pair ejectMembers( GroupInfoV2 groupInfoV2, Set uuids ) throws IOException {