]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/helper/GroupHelper.java
Improve error message when joining a group with already pending admin approval
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / helper / GroupHelper.java
index 5a262685ec294513a8eb8336ea9462630fd4b727..3f8740d92707184d97a7fe5c2b2f72843e8abcd1 100644 (file)
@@ -4,6 +4,7 @@ import org.asamk.signal.manager.SignalDependencies;
 import org.asamk.signal.manager.api.AttachmentInvalidException;
 import org.asamk.signal.manager.api.InactiveGroupLinkException;
 import org.asamk.signal.manager.api.Pair;
+import org.asamk.signal.manager.api.PendingAdminApprovalException;
 import org.asamk.signal.manager.api.SendGroupMessageResults;
 import org.asamk.signal.manager.api.SendMessageResult;
 import org.asamk.signal.manager.config.ServiceConfig;
@@ -290,7 +291,7 @@ public class GroupHelper {
 
     public Pair<GroupId, SendGroupMessageResults> joinGroup(
             GroupInviteLinkUrl inviteLinkUrl
-    ) throws IOException, InactiveGroupLinkException {
+    ) throws IOException, InactiveGroupLinkException, PendingAdminApprovalException {
         final DecryptedGroupJoinInfo groupJoinInfo;
         try {
             groupJoinInfo = context.getGroupV2Helper()
@@ -298,6 +299,9 @@ public class GroupHelper {
         } catch (GroupLinkNotActiveException e) {
             throw new InactiveGroupLinkException("Group link inactive (reason: " + e.getReason() + ")", e);
         }
+        if (groupJoinInfo.getPendingAdminApproval()) {
+            throw new PendingAdminApprovalException("You have already requested to join the group.");
+        }
         final var groupChange = context.getGroupV2Helper()
                 .joinGroup(inviteLinkUrl.getGroupMasterKey(), inviteLinkUrl.getPassword(), groupJoinInfo);
         final var group = getOrMigrateGroup(inviteLinkUrl.getGroupMasterKey(),