1 package org
.asamk
.signal
.commands
;
3 import net
.sourceforge
.argparse4j
.impl
.Arguments
;
4 import net
.sourceforge
.argparse4j
.inf
.Namespace
;
5 import net
.sourceforge
.argparse4j
.inf
.Subparser
;
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
;
12 import java
.util
.List
;
14 import java
.util
.stream
.Collectors
;
16 public class ListGroupsCommand
implements LocalCommand
{
18 private static void printGroup(Manager m
, GroupInfo group
, boolean detailed
) {
20 Set
<String
> members
= group
.getMembers()
22 .map(m
::resolveSignalServiceAddress
)
23 .map(SignalServiceAddress
::getLegacyIdentifier
)
24 .collect(Collectors
.toSet());
26 Set
<String
> pendingMembers
= group
.getPendingMembers()
28 .map(m
::resolveSignalServiceAddress
)
29 .map(SignalServiceAddress
::getLegacyIdentifier
)
30 .collect(Collectors
.toSet());
32 Set
<String
> requestingMembers
= group
.getRequestingMembers()
34 .map(m
::resolveSignalServiceAddress
)
35 .map(SignalServiceAddress
::getLegacyIdentifier
)
36 .collect(Collectors
.toSet());
38 final GroupInviteLinkUrl groupInviteLink
= group
.getGroupInviteLink();
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(),
44 group
.isMember(m
.getSelfAddress()),
49 groupInviteLink
== null ?
'-' : groupInviteLink
.getUrl()));
51 System
.out
.println(String
.format("Id: %s Name: %s Active: %s Blocked: %b",
52 group
.getGroupId().toBase64(),
54 group
.isMember(m
.getSelfAddress()),
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");
66 public int handleCommand(final Namespace ns
, final Manager m
) {
67 if (!m
.isRegistered()) {
68 System
.err
.println("User is not registered.");
72 List
<GroupInfo
> groups
= m
.getGroups();
73 boolean detailed
= ns
.getBoolean("detailed");
75 for (GroupInfo group
: groups
) {
76 printGroup(m
, group
, detailed
);