]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/helper/GroupV2Helper.java
Approve join requests instead of just adding the member
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / helper / GroupV2Helper.java
index dd75a8f2bd701c58f337db1677a5c3e0308560b5..09e3ff955aa78efada8b09c0ec42a07040382186 100644 (file)
@@ -287,6 +287,17 @@ class GroupV2Helper {
         return ejectMembers(groupInfoV2, memberUuids);
     }
 
+    Pair<DecryptedGroup, GroupChange> approveJoinRequestMembers(
+            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 approveJoinRequest(groupInfoV2, memberUuids);
+    }
+
     Pair<DecryptedGroup, GroupChange> refuseJoinRequestMembers(
             GroupInfoV2 groupInfoV2, Set<RecipientId> members
     ) throws IOException {
@@ -524,6 +535,13 @@ class GroupV2Helper {
         return commitChange(groupInfoV2, groupOperations.createRemoveInvitationChange(uuidCipherTexts));
     }
 
+    private Pair<DecryptedGroup, GroupChange> approveJoinRequest(
+            GroupInfoV2 groupInfoV2, Set<UUID> uuids
+    ) throws IOException {
+        final GroupsV2Operations.GroupOperations groupOperations = getGroupOperations(groupInfoV2);
+        return commitChange(groupInfoV2, groupOperations.createApproveGroupJoinRequest(uuids));
+    }
+
     private Pair<DecryptedGroup, GroupChange> refuseJoinRequest(
             GroupInfoV2 groupInfoV2, Set<UUID> uuids
     ) throws IOException {