]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/commands/UpdateConfigurationCommand.java
Reformat files
[signal-cli] / src / main / java / org / asamk / signal / commands / UpdateConfigurationCommand.java
1 package org.asamk.signal.commands;
2
3 import net.sourceforge.argparse4j.inf.Namespace;
4 import net.sourceforge.argparse4j.inf.Subparser;
5
6 import org.asamk.signal.commands.exceptions.CommandException;
7 import org.asamk.signal.commands.exceptions.UserErrorException;
8 import org.asamk.signal.manager.Manager;
9 import org.asamk.signal.manager.api.Configuration;
10 import org.asamk.signal.manager.api.NotPrimaryDeviceException;
11 import org.asamk.signal.output.OutputWriter;
12
13 import java.util.Optional;
14
15 public class UpdateConfigurationCommand implements JsonRpcLocalCommand {
16
17 @Override
18 public String getName() {
19 return "updateConfiguration";
20 }
21
22 @Override
23 public void attachToSubparser(final Subparser subparser) {
24 subparser.help("Update signal configs and sync them to linked devices.");
25 subparser.addArgument("--read-receipts")
26 .type(Boolean.class)
27 .help("Indicates if Signal should send read receipts.");
28 subparser.addArgument("--unidentified-delivery-indicators")
29 .type(Boolean.class)
30 .help("Indicates if Signal should show unidentified delivery indicators.");
31 subparser.addArgument("--typing-indicators")
32 .type(Boolean.class)
33 .help("Indicates if Signal should send/show typing indicators.");
34 subparser.addArgument("--link-previews")
35 .type(Boolean.class)
36 .help("Indicates if Signal should generate link previews.");
37 }
38
39 @Override
40 public void handleCommand(
41 final Namespace ns,
42 final Manager m,
43 final OutputWriter outputWriter
44 ) throws CommandException {
45 final var readReceipts = ns.getBoolean("read-receipts");
46 final var unidentifiedDeliveryIndicators = ns.getBoolean("unidentified-delivery-indicators");
47 final var typingIndicators = ns.getBoolean("typing-indicators");
48 final var linkPreviews = ns.getBoolean("link-previews");
49 try {
50 m.updateConfiguration(new Configuration(Optional.ofNullable(readReceipts),
51 Optional.ofNullable(unidentifiedDeliveryIndicators),
52 Optional.ofNullable(typingIndicators),
53 Optional.ofNullable(linkPreviews)));
54 } catch (NotPrimaryDeviceException e) {
55 throw new UserErrorException("This command doesn't work on linked devices.");
56 }
57 }
58 }