]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/commands/UpdateConfigurationCommand.java
Cleanup manager package
[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.IOErrorException;
8 import org.asamk.signal.commands.exceptions.UserErrorException;
9 import org.asamk.signal.manager.Manager;
10 import org.asamk.signal.manager.api.Configuration;
11 import org.asamk.signal.manager.api.NotMasterDeviceException;
12 import org.asamk.signal.output.OutputWriter;
13
14 import java.io.IOException;
15 import java.util.Optional;
16
17 public class UpdateConfigurationCommand implements JsonRpcLocalCommand {
18
19 @Override
20 public String getName() {
21 return "updateConfiguration";
22 }
23
24 @Override
25 public void attachToSubparser(final Subparser subparser) {
26 subparser.help("Update signal configs and sync them to linked devices.");
27 subparser.addArgument("--read-receipts")
28 .type(Boolean.class)
29 .help("Indicates if Signal should send read receipts.");
30 subparser.addArgument("--unidentified-delivery-indicators")
31 .type(Boolean.class)
32 .help("Indicates if Signal should show unidentified delivery indicators.");
33 subparser.addArgument("--typing-indicators")
34 .type(Boolean.class)
35 .help("Indicates if Signal should send/show typing indicators.");
36 subparser.addArgument("--link-previews")
37 .type(Boolean.class)
38 .help("Indicates if Signal should generate link previews.");
39 }
40
41 @Override
42 public void handleCommand(
43 final Namespace ns, final Manager m, 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 (IOException e) {
55 throw new IOErrorException("UpdateAccount error: " + e.getMessage(), e);
56 } catch (NotMasterDeviceException e) {
57 throw new UserErrorException("This command doesn't work on linked devices.");
58 }
59 }
60 }