]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java
Send typing messages with sender keys
[signal-cli] / src / main / java / org / asamk / signal / dbus / DbusManagerImpl.java
index 446a7b527db7ffa5ba6d50b8c2196afe5f8d1226..73c17f07185f000432de19bb27faa5af577b6a90 100644 (file)
@@ -42,6 +42,7 @@ import java.io.File;
 import java.io.IOException;
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.time.Duration;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -50,7 +51,6 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
 import java.util.UUID;
-import java.util.concurrent.TimeUnit;
 import java.util.function.Function;
 import java.util.function.Supplier;
 import java.util.stream.Collectors;
@@ -110,12 +110,28 @@ public class DbusManagerImpl implements Manager {
 
     @Override
     public Configuration getConfiguration() {
-        throw new UnsupportedOperationException();
+        final var configuration = getRemoteObject(new DBusPath(signal.getObjectPath() + "/Configuration"),
+                Signal.Configuration.class).GetAll("org.asamk.Signal.Configuration");
+        return new Configuration(Optional.of((Boolean) configuration.get("ReadReceipts").getValue()),
+                Optional.of((Boolean) configuration.get("UnidentifiedDeliveryIndicators").getValue()),
+                Optional.of((Boolean) configuration.get("TypingIndicators").getValue()),
+                Optional.of((Boolean) configuration.get("LinkPreviews").getValue()));
     }
 
     @Override
-    public void updateConfiguration(Configuration configuration) throws IOException {
-        throw new UnsupportedOperationException();
+    public void updateConfiguration(Configuration newConfiguration) throws IOException {
+        final var configuration = getRemoteObject(new DBusPath(signal.getObjectPath() + "/Configuration"),
+                Signal.Configuration.class);
+        newConfiguration.readReceipts()
+                .ifPresent(v -> configuration.Set("org.asamk.Signal.Configuration", "ReadReceipts", v));
+        newConfiguration.unidentifiedDeliveryIndicators()
+                .ifPresent(v -> configuration.Set("org.asamk.Signal.Configuration",
+                        "UnidentifiedDeliveryIndicators",
+                        v));
+        newConfiguration.typingIndicators()
+                .ifPresent(v -> configuration.Set("org.asamk.Signal.Configuration", "TypingIndicators", v));
+        newConfiguration.linkPreviews()
+                .ifPresent(v -> configuration.Set("org.asamk.Signal.Configuration", "LinkPreviews", v));
     }
 
     @Override
@@ -136,12 +152,12 @@ public class DbusManagerImpl implements Manager {
 
     @Override
     public void unregister() throws IOException {
-        throw new UnsupportedOperationException();
+        signal.unregister();
     }
 
     @Override
     public void deleteAccount() throws IOException {
-        throw new UnsupportedOperationException();
+        signal.deleteAccount();
     }
 
     @Override
@@ -208,7 +224,8 @@ public class DbusManagerImpl implements Manager {
 
     @Override
     public void deleteGroup(final GroupId groupId) throws IOException {
-        throw new UnsupportedOperationException();
+        final var group = getRemoteObject(signal.getGroup(groupId.serialize()), Signal.Group.class);
+        group.deleteGroup();
     }
 
     @Override
@@ -301,7 +318,8 @@ public class DbusManagerImpl implements Manager {
             signal.sendTyping(signal.getSelfNumber(), action == TypingAction.STOP);
             return 0L;
         }, groupId -> {
-            throw new UnsupportedOperationException();
+            signal.sendGroupTyping(groupId, action == TypingAction.STOP);
+            return 0L;
         });
     }
 
@@ -476,11 +494,11 @@ public class DbusManagerImpl implements Manager {
 
     @Override
     public void receiveMessages(
-            final long timeout, final TimeUnit unit, final ReceiveMessageHandler handler
+            final Duration timeout, final ReceiveMessageHandler handler
     ) throws IOException {
         addReceiveHandler(handler);
         try {
-            Thread.sleep(unit.toMillis(timeout));
+            Thread.sleep(timeout.toMillis());
         } catch (InterruptedException ignored) {
         }
         removeReceiveHandler(handler);