]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/helper/GroupV2Helper.java
Implement refuse group join requests
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / helper / GroupV2Helper.java
index b59eddcc2cf9e834cf921d9fd81fb1e7c63dcce5..dd75a8f2bd701c58f337db1677a5c3e0308560b5 100644 (file)
@@ -287,6 +287,17 @@ class GroupV2Helper {
         return ejectMembers(groupInfoV2, memberUuids);
     }
 
+    Pair<DecryptedGroup, GroupChange> refuseJoinRequestMembers(
+            GroupInfoV2 groupInfoV2, Set<RecipientId> 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<DecryptedGroup, GroupChange> revokeInvitedMembers(
             GroupInfoV2 groupInfoV2, Set<RecipientId> members
     ) throws IOException {
@@ -513,6 +524,13 @@ class GroupV2Helper {
         return commitChange(groupInfoV2, groupOperations.createRemoveInvitationChange(uuidCipherTexts));
     }
 
+    private Pair<DecryptedGroup, GroupChange> refuseJoinRequest(
+            GroupInfoV2 groupInfoV2, Set<UUID> uuids
+    ) throws IOException {
+        final GroupsV2Operations.GroupOperations groupOperations = getGroupOperations(groupInfoV2);
+        return commitChange(groupInfoV2, groupOperations.createRefuseGroupJoinRequest(uuids, false, List.of()));
+    }
+
     private Pair<DecryptedGroup, GroupChange> ejectMembers(
             GroupInfoV2 groupInfoV2, Set<UUID> uuids
     ) throws IOException {