X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/9ffacfe90e54a86da289d3e6fb3c3df738f57abb..85b0647a3eae6d542848df3997224923e648f54c:/src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java diff --git a/src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java b/src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java index 34961bd3..0f1343f9 100644 --- a/src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java +++ b/src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java @@ -8,7 +8,7 @@ import org.asamk.signal.OutputType; import org.asamk.signal.commands.exceptions.CommandException; import org.asamk.signal.jsonrpc.SignalJsonRpcDispatcherHandler; import org.asamk.signal.manager.Manager; -import org.asamk.signal.manager.api.ReceiveConfig; +import org.asamk.signal.manager.MultiAccountManager; import org.asamk.signal.output.JsonWriter; import org.asamk.signal.output.OutputWriter; import org.asamk.signal.util.IOUtils; @@ -19,7 +19,9 @@ import java.io.InputStreamReader; import java.util.List; import java.util.function.Supplier; -public class JsonRpcDispatcherCommand implements LocalCommand { +import static org.asamk.signal.util.CommandUtil.getReceiveConfig; + +public class JsonRpcDispatcherCommand implements LocalCommand, MultiLocalCommand { private final static Logger logger = LoggerFactory.getLogger(JsonRpcDispatcherCommand.class); @@ -40,6 +42,10 @@ public class JsonRpcDispatcherCommand implements LocalCommand { subparser.addArgument("--send-read-receipts") .help("Send read receipts for all incoming data messages (in addition to the default delivery receipts)") .action(Arguments.storeTrue()); + subparser.addArgument("--receive-mode") + .help("Specify when to start receiving messages.") + .type(Arguments.enumStringType(ReceiveMode.class)) + .setDefault(ReceiveMode.ON_START); } @Override @@ -51,16 +57,38 @@ public class JsonRpcDispatcherCommand implements LocalCommand { public void handleCommand( final Namespace ns, final Manager m, final OutputWriter outputWriter ) throws CommandException { - final var ignoreAttachments = Boolean.TRUE.equals(ns.getBoolean("ignore-attachments")); - final var ignoreStories = Boolean.TRUE.equals(ns.getBoolean("ignore-stories")); - final var sendReadReceipts = Boolean.TRUE.equals(ns.getBoolean("send-read-receipts")); - m.setReceiveConfig(new ReceiveConfig(ignoreAttachments, ignoreStories, sendReadReceipts)); + final var receiveMode = ns.get("receive-mode"); + final var receiveConfig = getReceiveConfig(ns); + m.setReceiveConfig(receiveConfig); final var jsonOutputWriter = (JsonWriter) outputWriter; - final Supplier lineSupplier = IOUtils.getLineSupplier(new InputStreamReader(System.in, - IOUtils.getConsoleCharset())); + final var lineSupplier = getLineSupplier(); - final var handler = new SignalJsonRpcDispatcherHandler(jsonOutputWriter, lineSupplier, false); + final var handler = new SignalJsonRpcDispatcherHandler(jsonOutputWriter, + lineSupplier, + receiveMode == ReceiveMode.MANUAL); handler.handleConnection(m); } + + @Override + public void handleCommand( + final Namespace ns, final MultiAccountManager c, final OutputWriter outputWriter + ) throws CommandException { + final var receiveMode = ns.get("receive-mode"); + final var receiveConfig = getReceiveConfig(ns); + c.getManagers().forEach(m -> m.setReceiveConfig(receiveConfig)); + c.addOnManagerAddedHandler(m -> m.setReceiveConfig(receiveConfig)); + + final var jsonOutputWriter = (JsonWriter) outputWriter; + final var lineSupplier = getLineSupplier(); + + final var handler = new SignalJsonRpcDispatcherHandler(jsonOutputWriter, + lineSupplier, + receiveMode == ReceiveMode.MANUAL); + handler.handleConnection(c); + } + + private static Supplier getLineSupplier() { + return IOUtils.getLineSupplier(new InputStreamReader(System.in, IOUtils.getConsoleCharset())); + } }