]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/commands/ListIdentitiesCommand.java
Don't abort on empty recipient unless there was also no group specified. (#176)
[signal-cli] / src / main / java / org / asamk / signal / commands / ListIdentitiesCommand.java
1 package org.asamk.signal.commands;
2
3 import net.sourceforge.argparse4j.inf.Namespace;
4 import net.sourceforge.argparse4j.inf.Subparser;
5 import org.asamk.signal.manager.Manager;
6 import org.asamk.signal.storage.protocol.JsonIdentityKeyStore;
7 import org.asamk.signal.util.Hex;
8 import org.asamk.signal.util.Util;
9
10 import java.util.List;
11 import java.util.Map;
12
13 public class ListIdentitiesCommand implements LocalCommand {
14
15 private static void printIdentityFingerprint(Manager m, String theirUsername, JsonIdentityKeyStore.Identity theirId) {
16 String digits = Util.formatSafetyNumber(m.computeSafetyNumber(theirUsername, theirId.getIdentityKey()));
17 System.out.println(String.format("%s: %s Added: %s Fingerprint: %s Safety Number: %s", theirUsername,
18 theirId.getTrustLevel(), theirId.getDateAdded(), Hex.toStringCondensed(theirId.getFingerprint()), digits));
19 }
20
21 @Override
22 public void attachToSubparser(final Subparser subparser) {
23 subparser.addArgument("-n", "--number")
24 .help("Only show identity keys for the given phone number.");
25 }
26
27 @Override
28 public int handleCommand(final Namespace ns, final Manager m) {
29 if (!m.isRegistered()) {
30 System.err.println("User is not registered.");
31 return 1;
32 }
33 if (ns.get("number") == null) {
34 for (Map.Entry<String, List<JsonIdentityKeyStore.Identity>> keys : m.getIdentities().entrySet()) {
35 for (JsonIdentityKeyStore.Identity id : keys.getValue()) {
36 printIdentityFingerprint(m, keys.getKey(), id);
37 }
38 }
39 } else {
40 String number = ns.getString("number");
41 for (JsonIdentityKeyStore.Identity id : m.getIdentities(number)) {
42 printIdentityFingerprint(m, number, id);
43 }
44 }
45 return 0;
46 }
47 }