From: AsamK Date: Sun, 22 Aug 2021 11:01:51 +0000 (+0200) Subject: Add member uuids to listGroup json output X-Git-Tag: v0.9.0~57 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/76942ea4582d8f5fc8b527f994ef0090e37bd111 Add member uuids to listGroup json output --- diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e2f55be..8af9e358 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ ## [Unreleased] ### Breaking changes - Removed deprecated `--json` parameter, use `--output=json` instead +- Json output format of `listGroups` command changed: + Members are now arrays of `{"number":"...","uuid":"..."}` instead of arrays of strings. - Removed deprecated fallback data paths, only `$XDG_DATA_HOME/signal-cli` is used now For those still using the old paths (`$HOME/.config/signal`, `$HOME/.config/textsecure`) you need to move those to the new location. diff --git a/src/main/java/org/asamk/signal/commands/ListGroupsCommand.java b/src/main/java/org/asamk/signal/commands/ListGroupsCommand.java index b912263f..91b643fc 100644 --- a/src/main/java/org/asamk/signal/commands/ListGroupsCommand.java +++ b/src/main/java/org/asamk/signal/commands/ListGroupsCommand.java @@ -16,6 +16,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Set; +import java.util.UUID; import java.util.stream.Collectors; public class ListGroupsCommand implements JsonRpcLocalCommand { @@ -42,6 +43,14 @@ public class ListGroupsCommand implements JsonRpcLocalCommand { .collect(Collectors.toSet()); } + private static Set resolveJsonMembers(Manager m, Set addresses) { + return addresses.stream() + .map(m::resolveSignalServiceAddress) + .map(address -> new JsonGroupMember(address.getNumber().orNull(), + address.getUuid().transform(UUID::toString).orNull())) + .collect(Collectors.toSet()); + } + private static void printGroupPlainText( PlainTextWriter writer, Manager m, GroupInfo group, boolean detailed ) { @@ -86,10 +95,10 @@ public class ListGroupsCommand implements JsonRpcLocalCommand { group.getDescription(), group.isMember(m.getSelfRecipientId()), group.isBlocked(), - resolveMembers(m, group.getMembers()), - resolveMembers(m, group.getPendingMembers()), - resolveMembers(m, group.getRequestingMembers()), - resolveMembers(m, group.getAdminMembers()), + resolveJsonMembers(m, group.getMembers()), + resolveJsonMembers(m, group.getPendingMembers()), + resolveJsonMembers(m, group.getRequestingMembers()), + resolveJsonMembers(m, group.getAdminMembers()), groupInviteLink == null ? null : groupInviteLink.getUrl()); }).collect(Collectors.toList()); @@ -105,17 +114,17 @@ public class ListGroupsCommand implements JsonRpcLocalCommand { private static final class JsonGroup { - public String id; - public String name; - public String description; - public boolean isMember; - public boolean isBlocked; + public final String id; + public final String name; + public final String description; + public final boolean isMember; + public final boolean isBlocked; - public Set members; - public Set pendingMembers; - public Set requestingMembers; - public Set admins; - public String groupInviteLink; + public final Set members; + public final Set pendingMembers; + public final Set requestingMembers; + public final Set admins; + public final String groupInviteLink; public JsonGroup( String id, @@ -123,10 +132,10 @@ public class ListGroupsCommand implements JsonRpcLocalCommand { String description, boolean isMember, boolean isBlocked, - Set members, - Set pendingMembers, - Set requestingMembers, - Set admins, + Set members, + Set pendingMembers, + Set requestingMembers, + Set admins, String groupInviteLink ) { this.id = id; @@ -142,4 +151,15 @@ public class ListGroupsCommand implements JsonRpcLocalCommand { this.groupInviteLink = groupInviteLink; } } + + private static final class JsonGroupMember { + + public final String number; + public final String uuid; + + private JsonGroupMember(final String number, final String uuid) { + this.number = number; + this.uuid = uuid; + } + } }