]> nmode's Git Repositories - signal-cli/commitdiff
Implement more methods for DbusManagerImpl
authorAsamK <asamk@gmx.de>
Sat, 11 Dec 2021 18:59:34 +0000 (19:59 +0100)
committerAsamK <asamk@gmx.de>
Sat, 11 Dec 2021 19:01:36 +0000 (20:01 +0100)
graalvm-config-dir/proxy-config.json
graalvm-config-dir/reflect-config.json
src/main/java/org/asamk/Signal.java
src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java
src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java

index 8f5752fe4a8060f19b82bf2a5b36bee84f4935e5..77ae83b1532f36a9aad57715eaaa6be34289c2f2 100644 (file)
@@ -2,6 +2,12 @@
   {
     "interfaces":["org.asamk.Signal"]}
   ,
+  {
+    "interfaces":["org.asamk.Signal$Configuration"]}
+  ,
+  {
+    "interfaces":["org.asamk.Signal$Device"]}
+  ,
   {
     "interfaces":["org.asamk.Signal$Group"]}
   ,
index cb75cbd9ea9c317dda85cab46534d0bea89b0947..464706e03be9049d9cc4d5cdfa9d1edadb29607a 100644 (file)
 ,
 {
   "name":"org.asamk.Signal$StructDevice",
-  "allDeclaredFields":true}
+  "allDeclaredFields":true,
+  "queryAllDeclaredConstructors":true,
+  "methods":[{"name":"<init>","parameterTypes":["org.freedesktop.dbus.DBusPath","java.lang.Long","java.lang.String"] }]}
 ,
 {
   "name":"org.asamk.Signal$StructGroup",
   "name":"org.signal.storageservice.protos.groups.GroupChange$Actions$ModifyAddFromInviteLinkAccessControlAction",
   "fields":[{"name":"addFromInviteLinkAccess_"}]}
 ,
+{
+  "name":"org.signal.storageservice.protos.groups.GroupChange$Actions$ModifyAnnouncementsOnlyAction",
+  "fields":[{"name":"announcementsOnly_"}]}
+,
 {
   "name":"org.signal.storageservice.protos.groups.GroupChange$Actions$ModifyAttributesAccessControlAction",
   "fields":[{"name":"attributesAccess_"}]}
index 35411bd0b4912158a82f7edfaf65cc89f6aa9b01..4fca64f3c18df17a32d8b04745a8ccdc6acbc926 100644 (file)
@@ -530,6 +530,8 @@ public interface Signal extends DBusInterface {
 
         void quitGroup() throws Error.Failure, Error.LastGroupAdmin;
 
+        void deleteGroup() throws Error.Failure;
+
         void addMembers(List<String> recipients) throws Error.Failure;
 
         void removeMembers(List<String> recipients) throws Error.Failure;
index c87a4a04a1a9f22431a6dfde69d6bc5123ad54a5..df21d94d61722ad6c8767ad02e324dc256b62c07 100644 (file)
@@ -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
index d306b3803b9810ee3e3d8fd08316c89ab551c64e..f2af8a3effc501ed5f3d26e660ec15bf244d9491 100644 (file)
@@ -562,6 +562,7 @@ public class DbusSignalImpl implements Signal {
             final var memberIdentifiers = getSingleRecipientIdentifiers(members, m.getSelfNumber());
             if (groupId == null) {
                 final var results = m.createGroup(name, memberIdentifiers, avatar == null ? null : new File(avatar));
+                updateGroups();
                 checkSendMessageResults(results.second().timestamp(), results.second().results());
                 return results.first().serialize();
             } else {
@@ -1152,6 +1153,16 @@ public class DbusSignalImpl implements Signal {
             }
         }
 
+        @Override
+        public void deleteGroup() throws Error.Failure, Error.LastGroupAdmin {
+            try {
+                m.deleteGroup(groupId);
+            } catch (IOException e) {
+                throw new Error.Failure(e.getMessage());
+            }
+            updateGroups();
+        }
+
         @Override
         public void addMembers(final List<String> recipients) throws Error.Failure {
             final var memberIdentifiers = getSingleRecipientIdentifiers(recipients, m.getSelfNumber());