import org.asamk.signal.manager.api.MessageEnvelope;
import org.asamk.signal.manager.api.NotPrimaryDeviceException;
import org.asamk.signal.manager.api.Pair;
+import org.asamk.signal.manager.api.PendingAdminApprovalException;
import org.asamk.signal.manager.api.ReceiveConfig;
import org.asamk.signal.manager.api.RecipientIdentifier;
import org.asamk.signal.manager.api.SendGroupMessageResults;
Pair<GroupId, SendGroupMessageResults> joinGroup(
GroupInviteLinkUrl inviteLinkUrl
- ) throws IOException, InactiveGroupLinkException;
+ ) throws IOException, InactiveGroupLinkException, PendingAdminApprovalException;
SendMessageResults sendTypingMessage(
TypingAction action, Set<RecipientIdentifier> recipients
import org.asamk.signal.manager.api.Message;
import org.asamk.signal.manager.api.NotPrimaryDeviceException;
import org.asamk.signal.manager.api.Pair;
+import org.asamk.signal.manager.api.PendingAdminApprovalException;
import org.asamk.signal.manager.api.ReceiveConfig;
import org.asamk.signal.manager.api.RecipientIdentifier;
import org.asamk.signal.manager.api.SendGroupMessageResults;
@Override
public Pair<GroupId, SendGroupMessageResults> joinGroup(
GroupInviteLinkUrl inviteLinkUrl
- ) throws IOException, InactiveGroupLinkException {
+ ) throws IOException, InactiveGroupLinkException, PendingAdminApprovalException {
return context.getGroupHelper().joinGroup(inviteLinkUrl);
}
--- /dev/null
+package org.asamk.signal.manager.api;
+
+public class PendingAdminApprovalException extends Exception {
+
+ public PendingAdminApprovalException(final String message) {
+ super(message);
+ }
+
+ public PendingAdminApprovalException(final String message, final Throwable cause) {
+ super(message, cause);
+ }
+}
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;
public Pair<GroupId, SendGroupMessageResults> joinGroup(
GroupInviteLinkUrl inviteLinkUrl
- ) throws IOException, InactiveGroupLinkException {
+ ) throws IOException, InactiveGroupLinkException, PendingAdminApprovalException {
final DecryptedGroupJoinInfo groupJoinInfo;
try {
groupJoinInfo = context.getGroupV2Helper()
} 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(),
import org.asamk.signal.commands.exceptions.UserErrorException;
import org.asamk.signal.manager.Manager;
import org.asamk.signal.manager.api.InactiveGroupLinkException;
+import org.asamk.signal.manager.api.PendingAdminApprovalException;
import org.asamk.signal.manager.groups.GroupInviteLinkUrl;
import org.asamk.signal.output.JsonWriter;
import org.asamk.signal.output.OutputWriter;
.getSimpleName() + ")", e);
} catch (InactiveGroupLinkException e) {
throw new UserErrorException("Group link is not valid: " + e.getMessage());
+ } catch (PendingAdminApprovalException e) {
+ throw new UserErrorException("Pending admin approval: " + e.getMessage());
}
}
}
import org.asamk.signal.manager.api.InvalidStickerException;
import org.asamk.signal.manager.api.Message;
import org.asamk.signal.manager.api.NotPrimaryDeviceException;
+import org.asamk.signal.manager.api.PendingAdminApprovalException;
import org.asamk.signal.manager.api.RecipientIdentifier;
import org.asamk.signal.manager.api.SendMessageResult;
import org.asamk.signal.manager.api.SendMessageResults;
}
final var result = m.joinGroup(linkUrl);
return result.first().serialize();
+ } catch (PendingAdminApprovalException e) {
+ throw new Error.Failure("Pending admin approval: " + e.getMessage());
} catch (GroupInviteLinkUrl.InvalidGroupLinkException | InactiveGroupLinkException e) {
throw new Error.Failure("Group link is invalid: " + e.getMessage());
} catch (GroupInviteLinkUrl.UnknownGroupLinkVersionException e) {