X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/c9f5550d1821ee99879c75db124baf46642fd846..6f5e72119e0c996f1efefecda11e33422d44a171:/src/main/java/org/asamk/signal/commands/UpdateConfigurationCommand.java diff --git a/src/main/java/org/asamk/signal/commands/UpdateConfigurationCommand.java b/src/main/java/org/asamk/signal/commands/UpdateConfigurationCommand.java new file mode 100644 index 00000000..9ca126d0 --- /dev/null +++ b/src/main/java/org/asamk/signal/commands/UpdateConfigurationCommand.java @@ -0,0 +1,55 @@ +package org.asamk.signal.commands; + +import net.sourceforge.argparse4j.inf.Namespace; +import net.sourceforge.argparse4j.inf.Subparser; + +import org.asamk.signal.OutputWriter; +import org.asamk.signal.commands.exceptions.CommandException; +import org.asamk.signal.commands.exceptions.IOErrorException; +import org.asamk.signal.commands.exceptions.UserErrorException; +import org.asamk.signal.manager.Manager; +import org.asamk.signal.manager.NotMasterDeviceException; + +import java.io.IOException; + +public class UpdateConfigurationCommand implements JsonRpcLocalCommand { + + @Override + public String getName() { + return "updateConfiguration"; + } + + @Override + public void attachToSubparser(final Subparser subparser) { + subparser.help("Update signal configs and sync them to linked devices."); + subparser.addArgument("--read-receipts") + .type(Boolean.class) + .help("Indicates if Signal should send read receipts."); + subparser.addArgument("--unidentified-delivery-indicators") + .type(Boolean.class) + .help("Indicates if Signal should show unidentified delivery indicators."); + subparser.addArgument("--typing-indicators") + .type(Boolean.class) + .help("Indicates if Signal should send/show typing indicators."); + subparser.addArgument("--link-previews") + .type(Boolean.class) + .help("Indicates if Signal should generate link previews."); + } + + @Override + public void handleCommand( + final Namespace ns, final Manager m, final OutputWriter outputWriter + ) throws CommandException { + final var readReceipts = ns.getBoolean("read-receipts"); + final var unidentifiedDeliveryIndicators = ns.getBoolean("unidentified-delivery-indicators"); + final var typingIndicators = ns.getBoolean("typing-indicators"); + final var linkPreviews = ns.getBoolean("link-previews"); + try { + m.updateConfiguration(readReceipts, unidentifiedDeliveryIndicators, typingIndicators, linkPreviews); + } catch (IOException e) { + throw new IOErrorException("UpdateAccount error: " + e.getMessage(), e); + } catch (NotMasterDeviceException e) { + throw new UserErrorException("This command doesn't work on linked devices."); + } + } +}