]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/commands/ListGroupsCommand.java
Add group v2 id to json output
[signal-cli] / src / main / java / org / asamk / signal / commands / ListGroupsCommand.java
1 package org.asamk.signal.commands;
2
3 import net.sourceforge.argparse4j.impl.Arguments;
4 import net.sourceforge.argparse4j.inf.Namespace;
5 import net.sourceforge.argparse4j.inf.Subparser;
6
7 import org.asamk.signal.manager.Manager;
8 import org.asamk.signal.storage.groups.GroupInfo;
9 import org.whispersystems.signalservice.api.push.SignalServiceAddress;
10 import org.whispersystems.util.Base64;
11
12 import java.util.List;
13 import java.util.Set;
14 import java.util.stream.Collectors;
15
16 public class ListGroupsCommand implements LocalCommand {
17
18 private static void printGroup(Manager m, GroupInfo group, boolean detailed) {
19 if (detailed) {
20 Set<String> members = group.getMembers()
21 .stream()
22 .map(m::resolveSignalServiceAddress)
23 .map(SignalServiceAddress::getLegacyIdentifier)
24 .collect(Collectors.toSet());
25
26 Set<String> pendingMembers = group.getPendingMembers()
27 .stream()
28 .map(m::resolveSignalServiceAddress)
29 .map(SignalServiceAddress::getLegacyIdentifier)
30 .collect(Collectors.toSet());
31
32 Set<String> requestingMembers = group.getRequestingMembers()
33 .stream()
34 .map(m::resolveSignalServiceAddress)
35 .map(SignalServiceAddress::getLegacyIdentifier)
36 .collect(Collectors.toSet());
37
38 System.out.println(String.format(
39 "Id: %s Name: %s Active: %s Blocked: %b Members: %s Pending members: %s Requesting members: %s",
40 Base64.encodeBytes(group.groupId),
41 group.getTitle(),
42 group.isMember(m.getSelfAddress()),
43 group.isBlocked(),
44 members,
45 pendingMembers,
46 requestingMembers));
47 } else {
48 System.out.println(String.format("Id: %s Name: %s Active: %s Blocked: %b",
49 Base64.encodeBytes(group.groupId),
50 group.getTitle(),
51 group.isMember(m.getSelfAddress()),
52 group.isBlocked()));
53 }
54 }
55
56 @Override
57 public void attachToSubparser(final Subparser subparser) {
58 subparser.addArgument("-d", "--detailed").action(Arguments.storeTrue()).help("List members of each group");
59 subparser.help("List group name and ids");
60 }
61
62 @Override
63 public int handleCommand(final Namespace ns, final Manager m) {
64 if (!m.isRegistered()) {
65 System.err.println("User is not registered.");
66 return 1;
67 }
68
69 List<GroupInfo> groups = m.getGroups();
70 boolean detailed = ns.getBoolean("detailed");
71
72 for (GroupInfo group : groups) {
73 printGroup(m, group, detailed);
74 }
75 return 0;
76 }
77 }