From: AsamK Date: Sun, 7 May 2017 08:31:18 +0000 (+0200) Subject: Implement updateGroup command via dbus X-Git-Tag: v0.5.6~10 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/debcabd01442c028eb645f94f0510a8d235a416b?ds=inline Implement updateGroup command via dbus Fixes #77 --- diff --git a/src/main/java/org/asamk/Signal.java b/src/main/java/org/asamk/Signal.java index 79bf0172..9eb9b4cd 100644 --- a/src/main/java/org/asamk/Signal.java +++ b/src/main/java/org/asamk/Signal.java @@ -27,7 +27,7 @@ public interface Signal extends DBusInterface { List getGroupMembers(byte[] groupId); - void updateGroup(byte[] groupId, String name, List members, String avatar) throws IOException, EncapsulatedExceptions, GroupNotFoundException, AttachmentInvalidException; + byte[] updateGroup(byte[] groupId, String name, List members, String avatar) throws IOException, EncapsulatedExceptions, GroupNotFoundException, AttachmentInvalidException; class MessageReceived extends DBusSignal { private long timestamp; diff --git a/src/main/java/org/asamk/signal/Main.java b/src/main/java/org/asamk/signal/Main.java index c8963659..8a85f3d3 100644 --- a/src/main/java/org/asamk/signal/Main.java +++ b/src/main/java/org/asamk/signal/Main.java @@ -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.getList("member"), ns.getString("avatar")); if (groupId == null) { + groupId = new byte[0]; + } + String groupName = ns.getString("name"); + if (groupName == null) { + groupName = ""; + } + List groupMembers = ns.getList("member"); + if (groupMembers == null) { + groupMembers = new ArrayList(); + } + 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) { diff --git a/src/main/java/org/asamk/signal/Manager.java b/src/main/java/org/asamk/signal/Manager.java index 575bba22..e1c9f29a 100644 --- a/src/main/java/org/asamk/signal/Manager.java +++ b/src/main/java/org/asamk/signal/Manager.java @@ -836,7 +836,10 @@ class Manager implements Signal { } @Override - public void updateGroup(byte[] groupId, String name, List members, String avatar) throws IOException, EncapsulatedExceptions, GroupNotFoundException, AttachmentInvalidException { + public byte[] updateGroup(byte[] groupId, String name, List 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 {