]> nmode's Git Repositories - signal-cli/commitdiff
Removing linked devices only works on the primary device
authorAsamK <asamk@gmx.de>
Sun, 25 Feb 2024 17:12:36 +0000 (18:12 +0100)
committerAsamK <asamk@gmx.de>
Sun, 25 Feb 2024 17:12:36 +0000 (18:12 +0100)
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/RemoveDeviceCommand.java
src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java

index 76b6a85c2afdcca7d44772b9264ca9ddc578b2d7..7e0c1120389bcef13cb9ff147e6646a476690707 100644 (file)
@@ -140,7 +140,7 @@ public interface Manager extends Closeable {
 
     List<Device> getLinkedDevices() throws IOException;
 
-    void removeLinkedDevices(int deviceId) throws IOException;
+    void removeLinkedDevices(int deviceId) throws IOException, NotPrimaryDeviceException;
 
     void addDeviceLink(DeviceLinkUrl linkUri) throws IOException, InvalidDeviceLinkException, NotPrimaryDeviceException;
 
index 51a0e5ace4be96a257811c0fff3b3a37a9ac141a..5ef30db0ea73ffeddd49ce6bcffca26246b2a185 100644 (file)
@@ -436,7 +436,10 @@ public class ManagerImpl implements Manager {
     }
 
     @Override
-    public void removeLinkedDevices(int deviceId) throws IOException {
+    public void removeLinkedDevices(int deviceId) throws IOException, NotPrimaryDeviceException {
+        if (!account.isPrimaryDevice()) {
+            throw new NotPrimaryDeviceException();
+        }
         context.getAccountHelper().removeLinkedDevices(deviceId);
     }
 
index 24b3f81e8079ea2643f78ca636dff35c5db460c8..68a53616232b77d7d689c0c0bc4406e3cd9a6c75 100644 (file)
@@ -5,7 +5,9 @@ import net.sourceforge.argparse4j.inf.Subparser;
 
 import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.IOErrorException;
+import org.asamk.signal.commands.exceptions.UserErrorException;
 import org.asamk.signal.manager.Manager;
+import org.asamk.signal.manager.api.NotPrimaryDeviceException;
 import org.asamk.signal.output.OutputWriter;
 
 import java.io.IOException;
@@ -33,6 +35,8 @@ public class RemoveDeviceCommand implements JsonRpcLocalCommand {
         try {
             final var deviceId = ns.getInt("device-id");
             m.removeLinkedDevices(deviceId);
+        } catch (NotPrimaryDeviceException e) {
+            throw new UserErrorException("This command doesn't work on linked devices.");
         } catch (IOException e) {
             throw new IOErrorException("Error while removing device: " + e.getMessage(), e);
         }
index 6db2ef63a56aaaee2065dc2a687fa83d9cb5707b..257283fc4d8912fe0d685302b3816d808d764ce9 100644 (file)
@@ -1177,6 +1177,8 @@ public class DbusSignalImpl implements Signal, AutoCloseable {
             try {
                 m.removeLinkedDevices(device.id());
                 updateDevices();
+            } catch (NotPrimaryDeviceException e) {
+                throw new Error.Failure("This command doesn't work on linked devices.");
             } catch (IOException e) {
                 throw new Error.Failure(e.getMessage());
             }