]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/commands/ListGroupsCommand.java
Move storage package to manager
[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.manager.groups.GroupInviteLinkUrl;
9 import org.asamk.signal.manager.storage.groups.GroupInfo;
10 import org.whispersystems.signalservice.api.push.SignalServiceAddress;
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 final GroupInviteLinkUrl groupInviteLink = group.getGroupInviteLink();
39
40 System.out.println(String.format(
41 "Id: %s Name: %s Active: %s Blocked: %b Members: %s Pending members: %s Requesting members: %s Link: %s",
42 group.getGroupId().toBase64(),
43 group.getTitle(),
44 group.isMember(m.getSelfAddress()),
45 group.isBlocked(),
46 members,
47 pendingMembers,
48 requestingMembers,
49 groupInviteLink == null ? '-' : groupInviteLink.getUrl()));
50 } else {
51 System.out.println(String.format("Id: %s Name: %s Active: %s Blocked: %b",
52 group.getGroupId().toBase64(),
53 group.getTitle(),
54 group.isMember(m.getSelfAddress()),
55 group.isBlocked()));
56 }
57 }
58
59 @Override
60 public void attachToSubparser(final Subparser subparser) {
61 subparser.addArgument("-d", "--detailed").action(Arguments.storeTrue()).help("List members of each group");
62 subparser.help("List group name and ids");
63 }
64
65 @Override
66 public int handleCommand(final Namespace ns, final Manager m) {
67 if (!m.isRegistered()) {
68 System.err.println("User is not registered.");
69 return 1;
70 }
71
72 List<GroupInfo> groups = m.getGroups();
73 boolean detailed = ns.getBoolean("detailed");
74
75 for (GroupInfo group : groups) {
76 printGroup(m, group, detailed);
77 }
78 return 0;
79 }
80 }