]> nmode's Git Repositories - signal-cli/commitdiff
Add InactiveGroupLinkException
authorAsamK <asamk@gmx.de>
Sun, 31 Oct 2021 18:45:30 +0000 (19:45 +0100)
committerAsamK <asamk@gmx.de>
Sun, 31 Oct 2021 18:45:30 +0000 (19:45 +0100)
lib/src/main/java/org/asamk/signal/manager/Manager.java
lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java
lib/src/main/java/org/asamk/signal/manager/api/InactiveGroupLinkException.java [new file with mode: 0644]
lib/src/main/java/org/asamk/signal/manager/helper/GroupHelper.java
src/main/java/org/asamk/signal/commands/JoinGroupCommand.java
src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java
src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java

index fae863817207ceb7fb707cc3fc4f797478a08837..c7131d394056ac395761e2ee3f5c718b065045ef 100644 (file)
@@ -3,6 +3,7 @@ package org.asamk.signal.manager;
 import org.asamk.signal.manager.api.Device;
 import org.asamk.signal.manager.api.Group;
 import org.asamk.signal.manager.api.Identity;
+import org.asamk.signal.manager.api.InactiveGroupLinkException;
 import org.asamk.signal.manager.api.InvalidDeviceLinkException;
 import org.asamk.signal.manager.api.Message;
 import org.asamk.signal.manager.api.Pair;
@@ -24,7 +25,6 @@ import org.asamk.signal.manager.storage.identities.TrustNewIdentity;
 import org.asamk.signal.manager.storage.recipients.Contact;
 import org.asamk.signal.manager.storage.recipients.Profile;
 import org.asamk.signal.manager.storage.recipients.RecipientAddress;
-import org.whispersystems.signalservice.api.groupsv2.GroupLinkNotActiveException;
 import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentRemoteId;
 import org.whispersystems.signalservice.api.messages.SignalServiceContent;
 import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope;
@@ -141,7 +141,7 @@ public interface Manager extends Closeable {
 
     Pair<GroupId, SendGroupMessageResults> joinGroup(
             GroupInviteLinkUrl inviteLinkUrl
-    ) throws IOException, GroupLinkNotActiveException;
+    ) throws IOException, InactiveGroupLinkException;
 
     void sendTypingMessage(
             TypingAction action, Set<RecipientIdentifier> recipients
index 345413c67c54ca12d421f196d3d6d0c753489de0..bbef8a069378e20e6d36a7bbc4c32923ba9dbc56 100644 (file)
@@ -20,6 +20,7 @@ import org.asamk.signal.manager.actions.HandleAction;
 import org.asamk.signal.manager.api.Device;
 import org.asamk.signal.manager.api.Group;
 import org.asamk.signal.manager.api.Identity;
+import org.asamk.signal.manager.api.InactiveGroupLinkException;
 import org.asamk.signal.manager.api.InvalidDeviceLinkException;
 import org.asamk.signal.manager.api.Message;
 import org.asamk.signal.manager.api.Pair;
@@ -68,7 +69,6 @@ import org.whispersystems.libsignal.InvalidKeyException;
 import org.whispersystems.libsignal.ecc.ECPublicKey;
 import org.whispersystems.libsignal.util.guava.Optional;
 import org.whispersystems.signalservice.api.SignalSessionLock;
-import org.whispersystems.signalservice.api.groupsv2.GroupLinkNotActiveException;
 import org.whispersystems.signalservice.api.messages.SendMessageResult;
 import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentRemoteId;
 import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage;
@@ -569,7 +569,7 @@ public class ManagerImpl implements Manager {
     @Override
     public Pair<GroupId, SendGroupMessageResults> joinGroup(
             GroupInviteLinkUrl inviteLinkUrl
-    ) throws IOException, GroupLinkNotActiveException {
+    ) throws IOException, InactiveGroupLinkException {
         return groupHelper.joinGroup(inviteLinkUrl);
     }
 
diff --git a/lib/src/main/java/org/asamk/signal/manager/api/InactiveGroupLinkException.java b/lib/src/main/java/org/asamk/signal/manager/api/InactiveGroupLinkException.java
new file mode 100644 (file)
index 0000000..914af46
--- /dev/null
@@ -0,0 +1,12 @@
+package org.asamk.signal.manager.api;
+
+public class InactiveGroupLinkException extends Exception {
+
+    public InactiveGroupLinkException(final String message) {
+        super(message);
+    }
+
+    public InactiveGroupLinkException(final String message, final Throwable cause) {
+        super(message, cause);
+    }
+}
index a2fd8e03241175f4476a53048a6cc6a3930c37d0..3d91ea4294977c0a18938684f7e5449be7502696 100644 (file)
@@ -3,6 +3,7 @@ package org.asamk.signal.manager.helper;
 import org.asamk.signal.manager.AttachmentInvalidException;
 import org.asamk.signal.manager.AvatarStore;
 import org.asamk.signal.manager.SignalDependencies;
+import org.asamk.signal.manager.api.InactiveGroupLinkException;
 import org.asamk.signal.manager.api.Pair;
 import org.asamk.signal.manager.api.SendGroupMessageResults;
 import org.asamk.signal.manager.config.ServiceConfig;
@@ -27,6 +28,7 @@ import org.asamk.signal.manager.util.AttachmentUtils;
 import org.asamk.signal.manager.util.IOUtils;
 import org.signal.storageservice.protos.groups.GroupChange;
 import org.signal.storageservice.protos.groups.local.DecryptedGroup;
+import org.signal.storageservice.protos.groups.local.DecryptedGroupJoinInfo;
 import org.signal.zkgroup.InvalidInputException;
 import org.signal.zkgroup.groups.GroupMasterKey;
 import org.signal.zkgroup.groups.GroupSecretParams;
@@ -266,9 +268,14 @@ public class GroupHelper {
 
     public Pair<GroupId, SendGroupMessageResults> joinGroup(
             GroupInviteLinkUrl inviteLinkUrl
-    ) throws IOException, GroupLinkNotActiveException {
-        final var groupJoinInfo = groupV2Helper.getDecryptedGroupJoinInfo(inviteLinkUrl.getGroupMasterKey(),
-                inviteLinkUrl.getPassword());
+    ) throws IOException, InactiveGroupLinkException {
+        final DecryptedGroupJoinInfo groupJoinInfo;
+        try {
+            groupJoinInfo = groupV2Helper.getDecryptedGroupJoinInfo(inviteLinkUrl.getGroupMasterKey(),
+                    inviteLinkUrl.getPassword());
+        } catch (GroupLinkNotActiveException e) {
+            throw new InactiveGroupLinkException("Group link inactive", e);
+        }
         final var groupChange = groupV2Helper.joinGroup(inviteLinkUrl.getGroupMasterKey(),
                 inviteLinkUrl.getPassword(),
                 groupJoinInfo);
index 5501c5d60cf73b368eee1483b83722a580396971..c7b8b0403ee91443408e0b7d488fb7ac365f7a2f 100644 (file)
@@ -11,9 +11,9 @@ import org.asamk.signal.commands.exceptions.IOErrorException;
 import org.asamk.signal.commands.exceptions.UnexpectedErrorException;
 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.groups.GroupInviteLinkUrl;
 import org.freedesktop.dbus.exceptions.DBusExecutionException;
-import org.whispersystems.signalservice.api.groupsv2.GroupLinkNotActiveException;
 import org.whispersystems.signalservice.internal.push.exceptions.GroupPatchNotAcceptedException;
 
 import java.io.IOException;
@@ -81,7 +81,7 @@ public class JoinGroupCommand implements JsonRpcLocalCommand {
         } catch (DBusExecutionException e) {
             throw new UnexpectedErrorException("Failed to send message: " + e.getMessage() + " (" + e.getClass()
                     .getSimpleName() + ")", e);
-        } catch (GroupLinkNotActiveException e) {
+        } catch (InactiveGroupLinkException e) {
             throw new UserErrorException("Group link is not valid: " + e.getMessage());
         }
     }
index 20309cfc0415cd5ec14f7c39b7b94d1871b97519..7c886e36ed88bdcbe5829ae849b6e57d4ded2169 100644 (file)
@@ -10,6 +10,7 @@ import org.asamk.signal.manager.UntrustedIdentityException;
 import org.asamk.signal.manager.api.Device;
 import org.asamk.signal.manager.api.Group;
 import org.asamk.signal.manager.api.Identity;
+import org.asamk.signal.manager.api.InactiveGroupLinkException;
 import org.asamk.signal.manager.api.InvalidDeviceLinkException;
 import org.asamk.signal.manager.api.Message;
 import org.asamk.signal.manager.api.Pair;
@@ -32,7 +33,6 @@ import org.freedesktop.dbus.DBusPath;
 import org.freedesktop.dbus.connections.impl.DBusConnection;
 import org.freedesktop.dbus.exceptions.DBusException;
 import org.freedesktop.dbus.interfaces.DBusInterface;
-import org.whispersystems.signalservice.api.groupsv2.GroupLinkNotActiveException;
 import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentRemoteId;
 import org.whispersystems.signalservice.api.push.SignalServiceAddress;
 import org.whispersystems.signalservice.api.push.exceptions.UnregisteredUserException;
@@ -283,7 +283,7 @@ public class DbusManagerImpl implements Manager {
     }
 
     @Override
-    public Pair<GroupId, SendGroupMessageResults> joinGroup(final GroupInviteLinkUrl inviteLinkUrl) throws IOException, GroupLinkNotActiveException {
+    public Pair<GroupId, SendGroupMessageResults> joinGroup(final GroupInviteLinkUrl inviteLinkUrl) throws IOException, InactiveGroupLinkException {
         final var newGroupId = signal.joinGroup(inviteLinkUrl.getUrl());
         return new Pair<>(GroupId.unknownVersion(newGroupId), new SendGroupMessageResults(0, List.of()));
     }
index 00721f55761b50081198fcd010b5f6bdca822ac6..07be4b3e7f8976242cb11c934877961a27efcb70 100644 (file)
@@ -9,6 +9,7 @@ import org.asamk.signal.manager.NotMasterDeviceException;
 import org.asamk.signal.manager.StickerPackInvalidException;
 import org.asamk.signal.manager.UntrustedIdentityException;
 import org.asamk.signal.manager.api.Identity;
+import org.asamk.signal.manager.api.InactiveGroupLinkException;
 import org.asamk.signal.manager.api.InvalidDeviceLinkException;
 import org.asamk.signal.manager.api.Message;
 import org.asamk.signal.manager.api.Pair;
@@ -31,7 +32,6 @@ import org.freedesktop.dbus.connections.impl.DBusConnection;
 import org.freedesktop.dbus.exceptions.DBusException;
 import org.freedesktop.dbus.exceptions.DBusExecutionException;
 import org.freedesktop.dbus.types.Variant;
-import org.whispersystems.signalservice.api.groupsv2.GroupLinkNotActiveException;
 import org.whispersystems.signalservice.api.messages.SendMessageResult;
 import org.whispersystems.signalservice.api.push.exceptions.UnregisteredUserException;
 import org.whispersystems.signalservice.api.util.InvalidNumberException;
@@ -670,7 +670,7 @@ public class DbusSignalImpl implements Signal {
             }
             final var result = m.joinGroup(linkUrl);
             return result.first().serialize();
-        } catch (GroupInviteLinkUrl.InvalidGroupLinkException | GroupLinkNotActiveException e) {
+        } catch (GroupInviteLinkUrl.InvalidGroupLinkException | InactiveGroupLinkException e) {
             throw new Error.Failure("Group link is invalid: " + e.getMessage());
         } catch (GroupInviteLinkUrl.UnknownGroupLinkVersionException e) {
             throw new Error.Failure("Group link was created with an incompatible version: " + e.getMessage());