mirror of
https://github.com/AsamK/signal-cli
synced 2025-08-29 10:30:38 +00:00
Add option to send read receipts for all received data messages
Fixes #850
This commit is contained in:
parent
fd92a96e1a
commit
27dbc671e0
7 changed files with 30 additions and 6 deletions
|
@ -1,3 +1,3 @@
|
||||||
package org.asamk.signal.manager.api;
|
package org.asamk.signal.manager.api;
|
||||||
|
|
||||||
public record ReceiveConfig(boolean ignoreAttachments) {}
|
public record ReceiveConfig(boolean ignoreAttachments, boolean sendReadReceipts) {}
|
||||||
|
|
|
@ -260,6 +260,11 @@ public final class IncomingMessageHandler {
|
||||||
actions.add(new SendProfileKeyAction(sender));
|
actions.add(new SendProfileKeyAction(sender));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (receiveConfig.sendReadReceipts()) {
|
||||||
|
actions.add(new SendReceiptAction(sender,
|
||||||
|
SignalServiceReceiptMessage.Type.READ,
|
||||||
|
message.getTimestamp()));
|
||||||
|
}
|
||||||
|
|
||||||
actions.addAll(handleSignalServiceDataMessage(message,
|
actions.addAll(handleSignalServiceDataMessage(message,
|
||||||
false,
|
false,
|
||||||
|
|
|
@ -35,7 +35,7 @@ public class ReceiveHelper {
|
||||||
private final SignalDependencies dependencies;
|
private final SignalDependencies dependencies;
|
||||||
private final Context context;
|
private final Context context;
|
||||||
|
|
||||||
private ReceiveConfig receiveConfig = new ReceiveConfig(false);
|
private ReceiveConfig receiveConfig = new ReceiveConfig(false, false);
|
||||||
private boolean needsToRetryFailedMessages = false;
|
private boolean needsToRetryFailedMessages = false;
|
||||||
private boolean hasCaughtUpWithOldMessages = false;
|
private boolean hasCaughtUpWithOldMessages = false;
|
||||||
private boolean isWaitingForMessage = false;
|
private boolean isWaitingForMessage = false;
|
||||||
|
|
|
@ -357,6 +357,9 @@ Default is 5 seconds.
|
||||||
*--ignore-attachments*::
|
*--ignore-attachments*::
|
||||||
Don’t download attachments of received messages.
|
Don’t download attachments of received messages.
|
||||||
|
|
||||||
|
*--send-read-receipts*::
|
||||||
|
Send read receipts for all incoming data messages (in addition to the default delivery receipts)
|
||||||
|
|
||||||
=== joinGroup
|
=== joinGroup
|
||||||
|
|
||||||
Join a group via an invitation link.
|
Join a group via an invitation link.
|
||||||
|
@ -628,6 +631,9 @@ See signal-cli-jsonrpc (5) for info on the JSON-RPC interface.
|
||||||
*--ignore-attachments*::
|
*--ignore-attachments*::
|
||||||
Don’t download attachments of received messages.
|
Don’t download attachments of received messages.
|
||||||
|
|
||||||
|
*--send-read-receipts*::
|
||||||
|
Send read receipts for all incoming data messages (in addition to the default delivery receipts)
|
||||||
|
|
||||||
*--no-receive-stdout*::
|
*--no-receive-stdout*::
|
||||||
Don’t print received messages to stdout.
|
Don’t print received messages to stdout.
|
||||||
|
|
||||||
|
|
|
@ -79,6 +79,9 @@ public class DaemonCommand implements MultiLocalCommand, LocalCommand {
|
||||||
subparser.addArgument("--ignore-attachments")
|
subparser.addArgument("--ignore-attachments")
|
||||||
.help("Don’t download attachments of received messages.")
|
.help("Don’t download attachments of received messages.")
|
||||||
.action(Arguments.storeTrue());
|
.action(Arguments.storeTrue());
|
||||||
|
subparser.addArgument("--send-read-receipts")
|
||||||
|
.help("Send read receipts for all incoming data messages (in addition to the default delivery receipts)")
|
||||||
|
.action(Arguments.storeTrue());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -94,8 +97,9 @@ public class DaemonCommand implements MultiLocalCommand, LocalCommand {
|
||||||
final var noReceiveStdOut = Boolean.TRUE.equals(ns.getBoolean("no-receive-stdout"));
|
final var noReceiveStdOut = Boolean.TRUE.equals(ns.getBoolean("no-receive-stdout"));
|
||||||
final var receiveMode = ns.<ReceiveMode>get("receive-mode");
|
final var receiveMode = ns.<ReceiveMode>get("receive-mode");
|
||||||
final var ignoreAttachments = Boolean.TRUE.equals(ns.getBoolean("ignore-attachments"));
|
final var ignoreAttachments = Boolean.TRUE.equals(ns.getBoolean("ignore-attachments"));
|
||||||
|
final boolean sendReadReceipts = Boolean.TRUE.equals(ns.getBoolean("send-read-receipts"));
|
||||||
|
|
||||||
m.setReceiveConfig(new ReceiveConfig(ignoreAttachments));
|
m.setReceiveConfig(new ReceiveConfig(ignoreAttachments, sendReadReceipts));
|
||||||
addDefaultReceiveHandler(m, noReceiveStdOut ? null : outputWriter, receiveMode != ReceiveMode.ON_START);
|
addDefaultReceiveHandler(m, noReceiveStdOut ? null : outputWriter, receiveMode != ReceiveMode.ON_START);
|
||||||
|
|
||||||
final Channel inheritedChannel;
|
final Channel inheritedChannel;
|
||||||
|
@ -156,8 +160,9 @@ public class DaemonCommand implements MultiLocalCommand, LocalCommand {
|
||||||
final var noReceiveStdOut = Boolean.TRUE.equals(ns.getBoolean("no-receive-stdout"));
|
final var noReceiveStdOut = Boolean.TRUE.equals(ns.getBoolean("no-receive-stdout"));
|
||||||
final var receiveMode = ns.<ReceiveMode>get("receive-mode");
|
final var receiveMode = ns.<ReceiveMode>get("receive-mode");
|
||||||
final var ignoreAttachments = Boolean.TRUE.equals(ns.getBoolean("ignore-attachments"));
|
final var ignoreAttachments = Boolean.TRUE.equals(ns.getBoolean("ignore-attachments"));
|
||||||
|
final boolean sendReadReceipts = Boolean.TRUE.equals(ns.getBoolean("send-read-receipts"));
|
||||||
|
|
||||||
final var receiveConfig = new ReceiveConfig(ignoreAttachments);
|
final var receiveConfig = new ReceiveConfig(ignoreAttachments, sendReadReceipts);
|
||||||
c.getManagers().forEach(m -> {
|
c.getManagers().forEach(m -> {
|
||||||
m.setReceiveConfig(receiveConfig);
|
m.setReceiveConfig(receiveConfig);
|
||||||
addDefaultReceiveHandler(m, noReceiveStdOut ? null : outputWriter, receiveMode != ReceiveMode.ON_START);
|
addDefaultReceiveHandler(m, noReceiveStdOut ? null : outputWriter, receiveMode != ReceiveMode.ON_START);
|
||||||
|
|
|
@ -34,6 +34,9 @@ public class JsonRpcDispatcherCommand implements LocalCommand {
|
||||||
subparser.addArgument("--ignore-attachments")
|
subparser.addArgument("--ignore-attachments")
|
||||||
.help("Don’t download attachments of received messages.")
|
.help("Don’t download attachments of received messages.")
|
||||||
.action(Arguments.storeTrue());
|
.action(Arguments.storeTrue());
|
||||||
|
subparser.addArgument("--send-read-receipts")
|
||||||
|
.help("Send read receipts for all incoming data messages (in addition to the default delivery receipts)")
|
||||||
|
.action(Arguments.storeTrue());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -46,7 +49,8 @@ public class JsonRpcDispatcherCommand implements LocalCommand {
|
||||||
final Namespace ns, final Manager m, final OutputWriter outputWriter
|
final Namespace ns, final Manager m, final OutputWriter outputWriter
|
||||||
) throws CommandException {
|
) throws CommandException {
|
||||||
final boolean ignoreAttachments = Boolean.TRUE.equals(ns.getBoolean("ignore-attachments"));
|
final boolean ignoreAttachments = Boolean.TRUE.equals(ns.getBoolean("ignore-attachments"));
|
||||||
m.setReceiveConfig(new ReceiveConfig(ignoreAttachments));
|
final boolean sendReadReceipts = Boolean.TRUE.equals(ns.getBoolean("send-read-receipts"));
|
||||||
|
m.setReceiveConfig(new ReceiveConfig(ignoreAttachments, sendReadReceipts));
|
||||||
|
|
||||||
final var jsonOutputWriter = (JsonWriter) outputWriter;
|
final var jsonOutputWriter = (JsonWriter) outputWriter;
|
||||||
final Supplier<String> lineSupplier = IOUtils.getLineSupplier(new InputStreamReader(System.in,
|
final Supplier<String> lineSupplier = IOUtils.getLineSupplier(new InputStreamReader(System.in,
|
||||||
|
|
|
@ -40,6 +40,9 @@ public class ReceiveCommand implements LocalCommand {
|
||||||
subparser.addArgument("--ignore-attachments")
|
subparser.addArgument("--ignore-attachments")
|
||||||
.help("Don’t download attachments of received messages.")
|
.help("Don’t download attachments of received messages.")
|
||||||
.action(Arguments.storeTrue());
|
.action(Arguments.storeTrue());
|
||||||
|
subparser.addArgument("--send-read-receipts")
|
||||||
|
.help("Send read receipts for all incoming data messages (in addition to the default delivery receipts)")
|
||||||
|
.action(Arguments.storeTrue());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -53,7 +56,8 @@ public class ReceiveCommand implements LocalCommand {
|
||||||
) throws CommandException {
|
) throws CommandException {
|
||||||
double timeout = ns.getDouble("timeout");
|
double timeout = ns.getDouble("timeout");
|
||||||
boolean ignoreAttachments = Boolean.TRUE.equals(ns.getBoolean("ignore-attachments"));
|
boolean ignoreAttachments = Boolean.TRUE.equals(ns.getBoolean("ignore-attachments"));
|
||||||
m.setReceiveConfig(new ReceiveConfig(ignoreAttachments));
|
boolean sendReadReceipts = Boolean.TRUE.equals(ns.getBoolean("send-read-receipts"));
|
||||||
|
m.setReceiveConfig(new ReceiveConfig(ignoreAttachments, sendReadReceipts));
|
||||||
try {
|
try {
|
||||||
final var handler = outputWriter instanceof JsonWriter ? new JsonReceiveMessageHandler(m,
|
final var handler = outputWriter instanceof JsonWriter ? new JsonReceiveMessageHandler(m,
|
||||||
(JsonWriter) outputWriter) : new ReceiveMessageHandler(m, (PlainTextWriter) outputWriter);
|
(JsonWriter) outputWriter) : new ReceiveMessageHandler(m, (PlainTextWriter) outputWriter);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue