]> nmode's Git Repositories - signal-cli/commitdiff
Implement updateGroup command via dbus
authorAsamK <asamk@gmx.de>
Sun, 7 May 2017 08:31:18 +0000 (10:31 +0200)
committerAsamK <asamk@gmx.de>
Sun, 7 May 2017 08:31:18 +0000 (10:31 +0200)
Fixes #77

src/main/java/org/asamk/Signal.java
src/main/java/org/asamk/signal/Main.java
src/main/java/org/asamk/signal/Manager.java

index 79bf0172b871d1ef6b35f0ee794024e01921a78d..9eb9b4cd516393b99ccd09f473f99b0bc892a7ab 100644 (file)
@@ -27,7 +27,7 @@ public interface Signal extends DBusInterface {
 
     List<String> getGroupMembers(byte[] groupId);
 
-    void updateGroup(byte[] groupId, String name, List<String> members, String avatar) throws IOException, EncapsulatedExceptions, GroupNotFoundException, AttachmentInvalidException;
+    byte[] updateGroup(byte[] groupId, String name, List<String> members, String avatar) throws IOException, EncapsulatedExceptions, GroupNotFoundException, AttachmentInvalidException;
 
     class MessageReceived extends DBusSignal {
         private long timestamp;
index c896365953217b69b76099d3ccdc3d0d6f283402..8a85f3d3b4917415c0be6b47e6d49b5412fa05cd 100644 (file)
@@ -460,11 +460,7 @@ public class Main {
 
                     break;
                 case "updateGroup":
-                    if (dBusConn != null) {
-                        System.err.println("updateGroup is not yet implemented via dbus");
-                        return 1;
-                    }
-                    if (!m.isRegistered()) {
+                    if (dBusConn == null && !m.isRegistered()) {
                         System.err.println("User is not registered.");
                         return 1;
                     }
@@ -474,8 +470,23 @@ public class Main {
                         if (ns.getString("group") != null) {
                             groupId = decodeGroupId(ns.getString("group"));
                         }
-                        byte[] newGroupId = m.sendUpdateGroupMessage(groupId, ns.getString("name"), ns.<String>getList("member"), ns.getString("avatar"));
                         if (groupId == null) {
+                            groupId = new byte[0];
+                        }
+                        String groupName = ns.getString("name");
+                        if (groupName == null) {
+                            groupName = "";
+                        }
+                        List<String> groupMembers = ns.<String>getList("member");
+                        if (groupMembers == null) {
+                            groupMembers = new ArrayList<String>();
+                        }
+                        String groupAvatar = ns.getString("avatar");
+                        if (groupAvatar == null) {
+                            groupAvatar = "";
+                        }
+                        byte[] newGroupId = ts.updateGroup(groupId, groupName, groupMembers, groupAvatar);
+                        if (groupId.length != newGroupId.length) {
                             System.out.println("Creating new group \"" + Base64.encodeBytes(newGroupId) + "\" …");
                         }
                     } catch (IOException e) {
index 575bba222b243862a5102bb4f97c9ece96690fd2..e1c9f29a289bf84a4d0b5f84beeb8ba66ae7164f 100644 (file)
@@ -836,7 +836,10 @@ class Manager implements Signal {
     }
 
     @Override
-    public void updateGroup(byte[] groupId, String name, List<String> members, String avatar) throws IOException, EncapsulatedExceptions, GroupNotFoundException, AttachmentInvalidException {
+    public byte[] updateGroup(byte[] groupId, String name, List<String> members, String avatar) throws IOException, EncapsulatedExceptions, GroupNotFoundException, AttachmentInvalidException {
+        if (groupId.length == 0) {
+            groupId = null;
+        }
         if (name.isEmpty()) {
             name = null;
         }
@@ -846,7 +849,7 @@ class Manager implements Signal {
         if (avatar.isEmpty()) {
             avatar = null;
         }
-        sendUpdateGroupMessage(groupId, name, members, avatar);
+        return sendUpdateGroupMessage(groupId, name, members, avatar);
     }
 
     private void requestSyncGroups() throws IOException {