From 22ac3cb50f9367f3a4728a4e276c3962e3e72596 Mon Sep 17 00:00:00 2001 From: AsamK Date: Sun, 25 Feb 2024 18:12:36 +0100 Subject: [PATCH] Removing linked devices only works on the primary device --- lib/src/main/java/org/asamk/signal/manager/Manager.java | 2 +- .../java/org/asamk/signal/manager/internal/ManagerImpl.java | 5 ++++- .../java/org/asamk/signal/commands/RemoveDeviceCommand.java | 4 ++++ src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java | 2 ++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/src/main/java/org/asamk/signal/manager/Manager.java b/lib/src/main/java/org/asamk/signal/manager/Manager.java index 76b6a85c..7e0c1120 100644 --- a/lib/src/main/java/org/asamk/signal/manager/Manager.java +++ b/lib/src/main/java/org/asamk/signal/manager/Manager.java @@ -140,7 +140,7 @@ public interface Manager extends Closeable { List getLinkedDevices() throws IOException; - void removeLinkedDevices(int deviceId) throws IOException; + void removeLinkedDevices(int deviceId) throws IOException, NotPrimaryDeviceException; void addDeviceLink(DeviceLinkUrl linkUri) throws IOException, InvalidDeviceLinkException, NotPrimaryDeviceException; diff --git a/lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java b/lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java index 51a0e5ac..5ef30db0 100644 --- a/lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java +++ b/lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java @@ -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); } diff --git a/src/main/java/org/asamk/signal/commands/RemoveDeviceCommand.java b/src/main/java/org/asamk/signal/commands/RemoveDeviceCommand.java index 24b3f81e..68a53616 100644 --- a/src/main/java/org/asamk/signal/commands/RemoveDeviceCommand.java +++ b/src/main/java/org/asamk/signal/commands/RemoveDeviceCommand.java @@ -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); } diff --git a/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java b/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java index 6db2ef63..257283fc 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java +++ b/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java @@ -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()); } -- 2.50.1