]> nmode's Git Repositories - signal-cli/commitdiff
Show better error message when using addDevice on a linked device
authorAsamK <asamk@gmx.de>
Mon, 21 Aug 2023 15:14:04 +0000 (17:14 +0200)
committerAsamK <asamk@gmx.de>
Mon, 21 Aug 2023 15:14:04 +0000 (17:14 +0200)
lib/src/main/java/org/asamk/signal/manager/Manager.java
lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java
src/main/java/org/asamk/signal/commands/AddDeviceCommand.java
src/main/java/org/asamk/signal/commands/AddStickerPackCommand.java

index e527c1a0ba69b5a82fb6fa0654de34e99d984d0b..264922a83f5f1c035594f610f2301cd9ffd72177 100644 (file)
@@ -117,7 +117,7 @@ public interface Manager extends Closeable {
 
     void removeLinkedDevices(int deviceId) throws IOException;
 
-    void addDeviceLink(DeviceLinkUrl linkUri) throws IOException, InvalidDeviceLinkException;
+    void addDeviceLink(DeviceLinkUrl linkUri) throws IOException, InvalidDeviceLinkException, NotPrimaryDeviceException;
 
     void setRegistrationLockPin(Optional<String> pin) throws IOException, NotPrimaryDeviceException;
 
index 3c7649e9f1464a8d1034ec2df16713d4831f4fd8..e8ab75a4074e1efe92c1ef49003b02b8bbcadf8e 100644 (file)
@@ -362,7 +362,10 @@ public class ManagerImpl implements Manager {
     }
 
     @Override
-    public void addDeviceLink(DeviceLinkUrl linkUrl) throws IOException, InvalidDeviceLinkException {
+    public void addDeviceLink(DeviceLinkUrl linkUrl) throws IOException, InvalidDeviceLinkException, NotPrimaryDeviceException {
+        if (!account.isPrimaryDevice()) {
+            throw new NotPrimaryDeviceException();
+        }
         context.getAccountHelper().addDevice(linkUrl);
     }
 
index 0895601a452143cfa5d3e91e9394f600587ce98b..47cf87485c32a3bec5fc27c1ff1ea5419f60268e 100644 (file)
@@ -9,6 +9,7 @@ import org.asamk.signal.commands.exceptions.UserErrorException;
 import org.asamk.signal.manager.Manager;
 import org.asamk.signal.manager.api.DeviceLinkUrl;
 import org.asamk.signal.manager.api.InvalidDeviceLinkException;
+import org.asamk.signal.manager.api.NotPrimaryDeviceException;
 import org.asamk.signal.output.OutputWriter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -49,11 +50,13 @@ public class AddDeviceCommand implements JsonRpcLocalCommand {
             var deviceLinkUrl = DeviceLinkUrl.parseDeviceLinkUri(linkUri);
             m.addDeviceLink(deviceLinkUrl);
         } catch (IOException e) {
-            logger.error("Add device link failed", e);
+            logger.error("Add device link failed: {}", e.getMessage());
             throw new IOErrorException("Add device link failed", e);
         } catch (InvalidDeviceLinkException e) {
-            logger.error("Add device link failed", e);
-            throw new UserErrorException("Add device link failed.", e);
+            logger.error("Invalid device link");
+            throw new UserErrorException("Invalid device link", e);
+        } catch (NotPrimaryDeviceException e) {
+            throw new UserErrorException("This command doesn't work on linked devices.");
         }
     }
 }
index 33de6e3085a37a1320030d937a6d65fb4cae80aa..a5af48d822c95709bdf8c33b8e11cac6eda47bd3 100644 (file)
@@ -51,10 +51,10 @@ public class AddStickerPackCommand implements JsonRpcLocalCommand {
                 var stickerPackUrl = StickerPackUrl.fromUri(stickerUri);
                 m.installStickerPack(stickerPackUrl);
             } catch (IOException e) {
-                logger.error("Install sticker pack failed", e);
+                logger.error("Install sticker pack failed: {}", e.getMessage());
                 throw new IOErrorException("Install sticker pack failed", e);
             } catch (StickerPackUrl.InvalidStickerPackLinkException e) {
-                logger.error("Invalid sticker pack link", e);
+                logger.error("Invalid sticker pack link");
                 throw new UserErrorException("Invalid sticker pack link", e);
             }
         }