Implement updateGroup command via dbus

Fixes #77
This commit is contained in:
AsamK 2017-05-07 10:31:18 +02:00
parent 3c3d3e92dd
commit debcabd014
3 changed files with 23 additions and 9 deletions

View 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;

View 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) {

View 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 {