From f5ba7894ae06909baeebfe9c23ccb9ab6b00a147 Mon Sep 17 00:00:00 2001 From: AsamK Date: Thu, 21 Oct 2021 21:01:48 +0200 Subject: [PATCH] Add setIgnoreAttachments method --- .../org/asamk/signal/manager/Manager.java | 8 +++----- .../org/asamk/signal/manager/ManagerImpl.java | 20 ++++++++++--------- .../asamk/signal/commands/DaemonCommand.java | 10 ++++++---- .../commands/JsonRpcDispatcherCommand.java | 9 ++++----- .../asamk/signal/commands/ReceiveCommand.java | 7 ++----- .../asamk/signal/dbus/DbusManagerImpl.java | 11 +++++----- 6 files changed, 32 insertions(+), 33 deletions(-) diff --git a/lib/src/main/java/org/asamk/signal/manager/Manager.java b/lib/src/main/java/org/asamk/signal/manager/Manager.java index 733e3dcc..f70c4e29 100644 --- a/lib/src/main/java/org/asamk/signal/manager/Manager.java +++ b/lib/src/main/java/org/asamk/signal/manager/Manager.java @@ -194,13 +194,11 @@ public interface Manager extends Closeable { void requestAllSyncData() throws IOException; void receiveMessages( - long timeout, - TimeUnit unit, - boolean returnOnTimeout, - boolean ignoreAttachments, - ReceiveMessageHandler handler + long timeout, TimeUnit unit, boolean returnOnTimeout, ReceiveMessageHandler handler ) throws IOException; + void setIgnoreAttachments(boolean ignoreAttachments); + boolean hasCaughtUpWithOldMessages(); boolean isContactBlocked(RecipientIdentifier.Single recipient); diff --git a/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java b/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java index cc90de5c..bec7f521 100644 --- a/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java +++ b/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java @@ -135,6 +135,7 @@ public class ManagerImpl implements Manager { private final Context context; private boolean hasCaughtUpWithOldMessages = false; + private boolean ignoreAttachments = false; ManagerImpl( SignalAccount account, @@ -824,10 +825,10 @@ public class ManagerImpl implements Manager { return registeredUsers; } - private void retryFailedReceivedMessages(ReceiveMessageHandler handler, boolean ignoreAttachments) { + private void retryFailedReceivedMessages(ReceiveMessageHandler handler) { Set queuedActions = new HashSet<>(); for (var cachedMessage : account.getMessageCache().getCachedMessages()) { - var actions = retryFailedReceivedMessage(handler, ignoreAttachments, cachedMessage); + var actions = retryFailedReceivedMessage(handler, cachedMessage); if (actions != null) { queuedActions.addAll(actions); } @@ -836,7 +837,7 @@ public class ManagerImpl implements Manager { } private List retryFailedReceivedMessage( - final ReceiveMessageHandler handler, final boolean ignoreAttachments, final CachedMessage cachedMessage + final ReceiveMessageHandler handler, final CachedMessage cachedMessage ) { var envelope = cachedMessage.loadEnvelope(); if (envelope == null) { @@ -873,13 +874,9 @@ public class ManagerImpl implements Manager { @Override public void receiveMessages( - long timeout, - TimeUnit unit, - boolean returnOnTimeout, - boolean ignoreAttachments, - ReceiveMessageHandler handler + long timeout, TimeUnit unit, boolean returnOnTimeout, ReceiveMessageHandler handler ) throws IOException { - retryFailedReceivedMessages(handler, ignoreAttachments); + retryFailedReceivedMessages(handler); Set queuedActions = new HashSet<>(); @@ -980,6 +977,11 @@ public class ManagerImpl implements Manager { queuedActions.clear(); } + @Override + public void setIgnoreAttachments(final boolean ignoreAttachments) { + this.ignoreAttachments = ignoreAttachments; + } + @Override public boolean hasCaughtUpWithOldMessages() { return hasCaughtUpWithOldMessages; diff --git a/src/main/java/org/asamk/signal/commands/DaemonCommand.java b/src/main/java/org/asamk/signal/commands/DaemonCommand.java index 02063b87..9997f56a 100644 --- a/src/main/java/org/asamk/signal/commands/DaemonCommand.java +++ b/src/main/java/org/asamk/signal/commands/DaemonCommand.java @@ -55,6 +55,7 @@ public class DaemonCommand implements MultiLocalCommand { final Namespace ns, final Manager m, final OutputWriter outputWriter ) throws CommandException { boolean ignoreAttachments = Boolean.TRUE.equals(ns.getBoolean("ignore-attachments")); + m.setIgnoreAttachments(ignoreAttachments); DBusConnection.DBusBusType busType; if (Boolean.TRUE.equals(ns.getBoolean("system"))) { @@ -65,7 +66,7 @@ public class DaemonCommand implements MultiLocalCommand { try (var conn = DBusConnection.getConnection(busType)) { var objectPath = DbusConfig.getObjectPath(); - var t = run(conn, objectPath, m, outputWriter, ignoreAttachments); + var t = run(conn, objectPath, m, outputWriter); conn.requestBusName(DbusConfig.getBusname()); @@ -94,9 +95,10 @@ public class DaemonCommand implements MultiLocalCommand { try (var conn = DBusConnection.getConnection(busType)) { final var signalControl = new DbusSignalControlImpl(c, m -> { + m.setIgnoreAttachments(ignoreAttachments); try { final var objectPath = DbusConfig.getObjectPath(m.getSelfNumber()); - return run(conn, objectPath, m, outputWriter, ignoreAttachments); + return run(conn, objectPath, m, outputWriter); } catch (DBusException e) { logger.error("Failed to export object", e); return null; @@ -118,7 +120,7 @@ public class DaemonCommand implements MultiLocalCommand { } private Thread run( - DBusConnection conn, String objectPath, Manager m, OutputWriter outputWriter, boolean ignoreAttachments + DBusConnection conn, String objectPath, Manager m, OutputWriter outputWriter ) throws DBusException { final var signal = new DbusSignalImpl(m, conn, objectPath); conn.exportObject(signal); @@ -133,7 +135,7 @@ public class DaemonCommand implements MultiLocalCommand { final var receiveMessageHandler = outputWriter instanceof JsonWriter ? new JsonDbusReceiveMessageHandler(m, (JsonWriter) outputWriter, conn, objectPath) : new DbusReceiveMessageHandler(m, (PlainTextWriter) outputWriter, conn, objectPath); - 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); diff --git a/src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java b/src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java index 9af67322..349bd0c4 100644 --- a/src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java +++ b/src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java @@ -66,6 +66,7 @@ public class JsonRpcDispatcherCommand implements LocalCommand { final Namespace ns, final Manager m, final OutputWriter outputWriter ) throws CommandException { 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,7 @@ 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()) { @@ -167,14 +168,12 @@ 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); diff --git a/src/main/java/org/asamk/signal/commands/ReceiveCommand.java b/src/main/java/org/asamk/signal/commands/ReceiveCommand.java index 4686f26d..b4797be3 100644 --- a/src/main/java/org/asamk/signal/commands/ReceiveCommand.java +++ b/src/main/java/org/asamk/signal/commands/ReceiveCommand.java @@ -148,14 +148,11 @@ public class ReceiveCommand implements ExtendedDbusCommand, LocalCommand { timeout = 3600; } boolean ignoreAttachments = Boolean.TRUE.equals(ns.getBoolean("ignore-attachments")); + m.setIgnoreAttachments(ignoreAttachments); try { final var handler = outputWriter instanceof JsonWriter ? new JsonReceiveMessageHandler(m, (JsonWriter) outputWriter) : new ReceiveMessageHandler(m, (PlainTextWriter) outputWriter); - m.receiveMessages((long) (timeout * 1000), - TimeUnit.MILLISECONDS, - returnOnTimeout, - ignoreAttachments, - handler); + m.receiveMessages((long) (timeout * 1000), TimeUnit.MILLISECONDS, returnOnTimeout, handler); } catch (IOException e) { throw new IOErrorException("Error while receiving messages: " + e.getMessage(), e); } diff --git a/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java b/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java index 59422e69..93d36888 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java +++ b/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java @@ -425,15 +425,16 @@ public class DbusManagerImpl implements Manager { @Override public void receiveMessages( - final long timeout, - final TimeUnit unit, - final boolean returnOnTimeout, - final boolean ignoreAttachments, - final ReceiveMessageHandler handler + final long timeout, final TimeUnit unit, final boolean returnOnTimeout, final ReceiveMessageHandler handler ) throws IOException { throw new UnsupportedOperationException(); } + @Override + public void setIgnoreAttachments(final boolean ignoreAttachments) { + throw new UnsupportedOperationException(); + } + @Override public boolean hasCaughtUpWithOldMessages() { throw new UnsupportedOperationException(); -- 2.50.1