]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java
Add setIgnoreAttachments method
[signal-cli] / src / main / java / org / asamk / signal / commands / JsonRpcDispatcherCommand.java
index 6b5361e5b7943251956fdf0171219de4af321c14..349bd0c415771b93b6ef8cc5cffcc2fba1e781fc 100644 (file)
@@ -65,7 +65,8 @@ public class JsonRpcDispatcherCommand implements LocalCommand {
     public void handleCommand(
             final Namespace ns, final Manager m, final OutputWriter outputWriter
     ) throws CommandException {
-        final boolean ignoreAttachments = ns.getBoolean("ignore-attachments");
+        final boolean ignoreAttachments = Boolean.TRUE.equals(ns.getBoolean("ignore-attachments"));
+        m.setIgnoreAttachments(ignoreAttachments);
 
         final var objectMapper = Util.createJsonObjectMapper();
         final var jsonRpcSender = new JsonRpcSender((JsonWriter) outputWriter);
@@ -73,7 +74,17 @@ public class JsonRpcDispatcherCommand implements LocalCommand {
         final var receiveThread = receiveMessages(s -> jsonRpcSender.sendRequest(JsonRpcRequest.forNotification(
                 "receive",
                 objectMapper.valueToTree(s),
-                null)), m, ignoreAttachments);
+                null)), m);
+
+        // Maybe this should be handled inside the Manager
+        while (!m.hasCaughtUpWithOldMessages()) {
+            try {
+                synchronized (m) {
+                    m.wait();
+                }
+            } catch (InterruptedException ignored) {
+            }
+        }
 
         final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
 
@@ -157,19 +168,15 @@ public class JsonRpcDispatcherCommand implements LocalCommand {
         command.handleCommand(requestParams, m, outputWriter);
     }
 
-    private Thread receiveMessages(
-            JsonWriter jsonWriter, Manager m, boolean ignoreAttachments
-    ) {
+    private Thread receiveMessages(JsonWriter jsonWriter, Manager m) {
         final var thread = new Thread(() -> {
             while (!Thread.interrupted()) {
                 try {
                     final var receiveMessageHandler = new JsonReceiveMessageHandler(m, jsonWriter);
-                    m.receiveMessages(1, TimeUnit.HOURS, false, ignoreAttachments, receiveMessageHandler);
+                    m.receiveMessages(1, TimeUnit.HOURS, false, receiveMessageHandler);
                     break;
                 } catch (IOException e) {
                     logger.warn("Receiving messages failed, retrying", e);
-                } catch (InterruptedException e) {
-                    break;
                 }
             }
         });