]> nmode's Git Repositories - signal-cli/commitdiff
Implement getConfiguration method in Manager
authorAsamK <asamk@gmx.de>
Sun, 7 Nov 2021 09:38:26 +0000 (10:38 +0100)
committerAsamK <asamk@gmx.de>
Sun, 7 Nov 2021 09:38:26 +0000 (10:38 +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/Configuration.java [new file with mode: 0644]
src/main/java/org/asamk/signal/commands/UpdateConfigurationCommand.java
src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java

index 65191232b55c5fab84ee28cb0e296248e592ba67..be5238d140cd981b2188570e37b46a414b905856 100644 (file)
@@ -1,5 +1,6 @@
 package org.asamk.signal.manager;
 
+import org.asamk.signal.manager.api.Configuration;
 import org.asamk.signal.manager.api.Device;
 import org.asamk.signal.manager.api.Group;
 import org.asamk.signal.manager.api.Identity;
@@ -99,12 +100,9 @@ public interface Manager extends Closeable {
 
     void updateAccountAttributes(String deviceName) throws IOException;
 
-    void updateConfiguration(
-            final Boolean readReceipts,
-            final Boolean unidentifiedDeliveryIndicators,
-            final Boolean typingIndicators,
-            final Boolean linkPreviews
-    ) throws IOException, NotMasterDeviceException;
+    Configuration getConfiguration();
+
+    void updateConfiguration(Configuration configuration) throws IOException, NotMasterDeviceException;
 
     void setProfile(
             String givenName, String familyName, String about, String aboutEmoji, Optional<File> avatar
index 57ac0aa78beb4446f9faf5e78fb0b2866e9c452e..5ee2e7d3b62ed01cd6f42181be41c8cabc4a4b09 100644 (file)
@@ -17,6 +17,7 @@
 package org.asamk.signal.manager;
 
 import org.asamk.signal.manager.actions.HandleAction;
+import org.asamk.signal.manager.api.Configuration;
 import org.asamk.signal.manager.api.Device;
 import org.asamk.signal.manager.api.Group;
 import org.asamk.signal.manager.api.Identity;
@@ -322,29 +323,35 @@ public class ManagerImpl implements Manager {
                         account.isDiscoverableByPhoneNumber());
     }
 
+    @Override
+    public Configuration getConfiguration() {
+        final var configurationStore = account.getConfigurationStore();
+        return new Configuration(java.util.Optional.ofNullable(configurationStore.getReadReceipts()),
+                java.util.Optional.ofNullable(configurationStore.getUnidentifiedDeliveryIndicators()),
+                java.util.Optional.ofNullable(configurationStore.getTypingIndicators()),
+                java.util.Optional.ofNullable(configurationStore.getLinkPreviews()));
+    }
+
     @Override
     public void updateConfiguration(
-            final Boolean readReceipts,
-            final Boolean unidentifiedDeliveryIndicators,
-            final Boolean typingIndicators,
-            final Boolean linkPreviews
+            Configuration configuration
     ) throws IOException, NotMasterDeviceException {
         if (!account.isMasterDevice()) {
             throw new NotMasterDeviceException();
         }
 
         final var configurationStore = account.getConfigurationStore();
-        if (readReceipts != null) {
-            configurationStore.setReadReceipts(readReceipts);
+        if (configuration.readReceipts().isPresent()) {
+            configurationStore.setReadReceipts(configuration.readReceipts().get());
         }
-        if (unidentifiedDeliveryIndicators != null) {
-            configurationStore.setUnidentifiedDeliveryIndicators(unidentifiedDeliveryIndicators);
+        if (configuration.unidentifiedDeliveryIndicators().isPresent()) {
+            configurationStore.setUnidentifiedDeliveryIndicators(configuration.unidentifiedDeliveryIndicators().get());
         }
-        if (typingIndicators != null) {
-            configurationStore.setTypingIndicators(typingIndicators);
+        if (configuration.typingIndicators().isPresent()) {
+            configurationStore.setTypingIndicators(configuration.typingIndicators().get());
         }
-        if (linkPreviews != null) {
-            configurationStore.setLinkPreviews(linkPreviews);
+        if (configuration.linkPreviews().isPresent()) {
+            configurationStore.setLinkPreviews(configuration.linkPreviews().get());
         }
         syncHelper.sendConfigurationMessage();
     }
diff --git a/lib/src/main/java/org/asamk/signal/manager/api/Configuration.java b/lib/src/main/java/org/asamk/signal/manager/api/Configuration.java
new file mode 100644 (file)
index 0000000..2ce132d
--- /dev/null
@@ -0,0 +1,10 @@
+package org.asamk.signal.manager.api;
+
+import java.util.Optional;
+
+public record Configuration(
+        Optional<Boolean> readReceipts,
+        Optional<Boolean> unidentifiedDeliveryIndicators,
+        Optional<Boolean> typingIndicators,
+        Optional<Boolean> linkPreviews
+) {}
index 9ca126d059c39cb9dbc943bc10f07da8e9806e9c..c6c29b63ff5506d3cd65cbe7885995b277c39684 100644 (file)
@@ -9,8 +9,10 @@ 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.NotMasterDeviceException;
+import org.asamk.signal.manager.api.Configuration;
 
 import java.io.IOException;
+import java.util.Optional;
 
 public class UpdateConfigurationCommand implements JsonRpcLocalCommand {
 
@@ -45,7 +47,10 @@ public class UpdateConfigurationCommand implements JsonRpcLocalCommand {
         final var typingIndicators = ns.getBoolean("typing-indicators");
         final var linkPreviews = ns.getBoolean("link-previews");
         try {
-            m.updateConfiguration(readReceipts, unidentifiedDeliveryIndicators, typingIndicators, linkPreviews);
+            m.updateConfiguration(new Configuration(Optional.ofNullable(readReceipts),
+                    Optional.ofNullable(unidentifiedDeliveryIndicators),
+                    Optional.ofNullable(typingIndicators),
+                    Optional.ofNullable(linkPreviews)));
         } catch (IOException e) {
             throw new IOErrorException("UpdateAccount error: " + e.getMessage(), e);
         } catch (NotMasterDeviceException e) {
index 7eb7c4dcbbef9c9e9e6d5208cc4c7f19bf537c79..c8dd1d45b3b85cddd06c479c171e6dd10fee648e 100644 (file)
@@ -7,6 +7,7 @@ import org.asamk.signal.manager.Manager;
 import org.asamk.signal.manager.NotMasterDeviceException;
 import org.asamk.signal.manager.StickerPackInvalidException;
 import org.asamk.signal.manager.UntrustedIdentityException;
+import org.asamk.signal.manager.api.Configuration;
 import org.asamk.signal.manager.api.Device;
 import org.asamk.signal.manager.api.Group;
 import org.asamk.signal.manager.api.Identity;
@@ -106,12 +107,12 @@ public class DbusManagerImpl implements Manager {
     }
 
     @Override
-    public void updateConfiguration(
-            final Boolean readReceipts,
-            final Boolean unidentifiedDeliveryIndicators,
-            final Boolean typingIndicators,
-            final Boolean linkPreviews
-    ) throws IOException {
+    public Configuration getConfiguration() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateConfiguration(Configuration configuration) throws IOException {
         throw new UnsupportedOperationException();
     }