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
.storage
.groups
.GroupInfo
;
9 import org
.whispersystems
.signalservice
.api
.push
.SignalServiceAddress
;
10 import org
.whispersystems
.util
.Base64
;
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());
25 System
.out
.println(String
.format("Id: %s Name: %s Active: %s Blocked: %b Members: %s",
26 Base64
.encodeBytes(group
.groupId
), group
.getTitle(), group
.isMember(m
.getSelfAddress()), group
.isBlocked(), members
));
28 System
.out
.println(String
.format("Id: %s Name: %s Active: %s Blocked: %b",
29 Base64
.encodeBytes(group
.groupId
), group
.getTitle(), group
.isMember(m
.getSelfAddress()), group
.isBlocked()));
34 public void attachToSubparser(final Subparser subparser
) {
35 subparser
.addArgument("-d", "--detailed").action(Arguments
.storeTrue())
36 .help("List members of each group");
37 subparser
.help("List group name and ids");
41 public int handleCommand(final Namespace ns
, final Manager m
) {
42 if (!m
.isRegistered()) {
43 System
.err
.println("User is not registered.");
47 List
<GroupInfo
> groups
= m
.getGroups();
48 boolean detailed
= ns
.getBoolean("detailed");
50 for (GroupInfo group
: groups
) {
51 printGroup(m
, group
, detailed
);