]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/commands/UpdateConfigurationCommand.java
Fix inspections
[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, final Manager m, final OutputWriter outputWriter
42 ) throws CommandException {
43 final var readReceipts = ns.getBoolean("read-receipts");
44 final var unidentifiedDeliveryIndicators = ns.getBoolean("unidentified-delivery-indicators");
45 final var typingIndicators = ns.getBoolean("typing-indicators");
46 final var linkPreviews = ns.getBoolean("link-previews");
47 try {
48 m.updateConfiguration(new Configuration(Optional.ofNullable(readReceipts),
49 Optional.ofNullable(unidentifiedDeliveryIndicators),
50 Optional.ofNullable(typingIndicators),
51 Optional.ofNullable(linkPreviews)));
52 } catch (NotPrimaryDeviceException e) {
53 throw new UserErrorException("This command doesn't work on linked devices.");
54 }
55 }
56 }