]> nmode's Git Repositories - signal-cli/commitdiff
Restrict blocking of group to master device
authorAsamK <asamk@gmx.de>
Tue, 12 Oct 2021 18:49:41 +0000 (20:49 +0200)
committerAsamK <asamk@gmx.de>
Tue, 12 Oct 2021 18:57:25 +0000 (20:57 +0200)
lib/src/main/java/org/asamk/signal/manager/Manager.java
lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java
src/main/java/org/asamk/signal/commands/BlockCommand.java
src/main/java/org/asamk/signal/commands/UnblockCommand.java
src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java

index f529b40865a75fbdebc8dfad985366aad9803464..3cfeb4f7680eb381eb452251f7500cb7b7b91c99 100644 (file)
@@ -184,7 +184,7 @@ public interface Manager extends Closeable {
 
     void setGroupBlocked(
             GroupId groupId, boolean blocked
 
     void setGroupBlocked(
             GroupId groupId, boolean blocked
-    ) throws GroupNotFoundException, IOException;
+    ) throws GroupNotFoundException, IOException, NotMasterDeviceException;
 
     void setExpirationTimer(
             RecipientIdentifier.Single recipient, int messageExpirationTimer
 
     void setExpirationTimer(
             RecipientIdentifier.Single recipient, int messageExpirationTimer
index f88469acc219bb39118e9a6a1a85660c90f40f99..a14f2d1f793451db9c69028064654bb372380f57 100644 (file)
@@ -714,7 +714,10 @@ public class ManagerImpl implements Manager {
     @Override
     public void setGroupBlocked(
             final GroupId groupId, final boolean blocked
     @Override
     public void setGroupBlocked(
             final GroupId groupId, final boolean blocked
-    ) throws GroupNotFoundException, IOException {
+    ) throws GroupNotFoundException, IOException, NotMasterDeviceException {
+        if (!account.isMasterDevice()) {
+            throw new NotMasterDeviceException();
+        }
         groupHelper.setGroupBlocked(groupId, blocked);
         // TODO cycle our profile key
         syncHelper.sendBlockedList();
         groupHelper.setGroupBlocked(groupId, blocked);
         // TODO cycle our profile key
         syncHelper.sendBlockedList();
index 516224f550cd6790eec90d9d0fd4c81c615d375e..1ec1036cd828defa7bc508c2c5aa38aedad98239 100644 (file)
@@ -52,6 +52,8 @@ public class BlockCommand implements JsonRpcLocalCommand {
             for (var groupId : CommandUtil.getGroupIds(groupIdStrings)) {
                 try {
                     m.setGroupBlocked(groupId, true);
             for (var groupId : CommandUtil.getGroupIds(groupIdStrings)) {
                 try {
                     m.setGroupBlocked(groupId, true);
+                } catch (NotMasterDeviceException e) {
+                    throw new UserErrorException("This command doesn't work on linked devices.");
                 } catch (GroupNotFoundException e) {
                     logger.warn("Group not found {}: {}", groupId.toBase64(), e.getMessage());
                 } catch (IOException e) {
                 } catch (GroupNotFoundException e) {
                     logger.warn("Group not found {}: {}", groupId.toBase64(), e.getMessage());
                 } catch (IOException e) {
index 7cf209fa05fe39adf9d6c0824560c732b409f286..53eab3b3b728d5b69bfaee45c8022bb7f213504c 100644 (file)
@@ -51,6 +51,8 @@ public class UnblockCommand implements JsonRpcLocalCommand {
         for (var groupId : CommandUtil.getGroupIds(groupIdStrings)) {
             try {
                 m.setGroupBlocked(groupId, false);
         for (var groupId : CommandUtil.getGroupIds(groupIdStrings)) {
             try {
                 m.setGroupBlocked(groupId, false);
+            } catch (NotMasterDeviceException e) {
+                throw new UserErrorException("This command doesn't work on linked devices.");
             } catch (GroupNotFoundException e) {
                 logger.warn("Unknown group id: {}", groupId);
             } catch (IOException e) {
             } catch (GroupNotFoundException e) {
                 logger.warn("Unknown group id: {}", groupId);
             } catch (IOException e) {
index 56ecdc55a9b3a6b5c91b0487f65e0baaae665dce..2cf3c813ff8adaa6965004998667001f1abd6fd9 100644 (file)
@@ -405,6 +405,8 @@ public class DbusSignalImpl implements Signal {
     public void setGroupBlocked(final byte[] groupId, final boolean blocked) {
         try {
             m.setGroupBlocked(getGroupId(groupId), blocked);
     public void setGroupBlocked(final byte[] groupId, final boolean blocked) {
         try {
             m.setGroupBlocked(getGroupId(groupId), blocked);
+        } catch (NotMasterDeviceException e) {
+            throw new Error.Failure("This command doesn't work on linked devices.");
         } catch (GroupNotFoundException e) {
             throw new Error.GroupNotFound(e.getMessage());
         } catch (IOException e) {
         } catch (GroupNotFoundException e) {
             throw new Error.GroupNotFound(e.getMessage());
         } catch (IOException e) {
@@ -1060,6 +1062,8 @@ public class DbusSignalImpl implements Signal {
         private void setIsBlocked(final boolean isBlocked) {
             try {
                 m.setGroupBlocked(groupId, isBlocked);
         private void setIsBlocked(final boolean isBlocked) {
             try {
                 m.setGroupBlocked(groupId, isBlocked);
+            } catch (NotMasterDeviceException e) {
+                throw new Error.Failure("This command doesn't work on linked devices.");
             } catch (GroupNotFoundException e) {
                 throw new Error.GroupNotFound(e.getMessage());
             } catch (IOException e) {
             } catch (GroupNotFoundException e) {
                 throw new Error.GroupNotFound(e.getMessage());
             } catch (IOException e) {