From: John Freed Date: Sat, 30 Oct 2021 10:53:33 +0000 (+0200) Subject: Implement viewedReceipt X-Git-Tag: v0.10.0~100 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/cb70209c603e9e1b1c88ee6eefcd64ea6aff9f9d Implement viewedReceipt commit cd29144e81701698092f3334bee0c99c0f77f202 Merge: 14532be f884175 Author: AsamK Date: Sat Oct 30 12:46:59 2021 +0200 Merge branch 'master' into dbus_sendviewed commit 14532befded0004d884f7f0ffa20a11ee5383c08 Author: John Freed Date: Thu Oct 7 08:24:00 2021 +0200 update deliveryReceipt to conform commit a9a6edaf3ff8ac81b1229db294d738f624688a0d Author: John Freed Date: Thu Oct 7 07:40:20 2021 +0200 implement viewedReceipt for Dbus and Json -- note that this changes the JsonReceiptMessage structure update documentation Closes #764 --- diff --git a/man/signal-cli-dbus.5.adoc b/man/signal-cli-dbus.5.adoc index 4c317db3..1bc0b879 100755 --- a/man/signal-cli-dbus.5.adoc +++ b/man/signal-cli-dbus.5.adoc @@ -462,6 +462,12 @@ sendReadReceipt(recipient, targetSentTimestamps) -> <>:: Exceptions: Failure, UntrustedIdentity +sendViewedReceipt(recipient, targetSentTimestamp) -> <>:: +* recipient : Phone number of a single recipient +* targetSentTimestamp : Array of Longs to identify the corresponding signal messages + +Exceptions: Failure, UntrustedIdentity + sendRemoteDeleteMessage(targetSentTimestamp, recipient) -> timestamp:: sendRemoteDeleteMessage(targetSentTimestamp, recipients) -> timestamp:: * targetSentTimestamp : Long representing timestamp of the message to delete diff --git a/src/main/java/org/asamk/Signal.java b/src/main/java/org/asamk/Signal.java index 240930dc..18bdbdb5 100644 --- a/src/main/java/org/asamk/Signal.java +++ b/src/main/java/org/asamk/Signal.java @@ -37,6 +37,10 @@ public interface Signal extends DBusInterface { String recipient, List messageIds ) throws Error.Failure, Error.UntrustedIdentity; + void sendViewedReceipt( + String recipient, List messageIds + ) throws Error.Failure, Error.UntrustedIdentity; + long sendRemoteDeleteMessage( long targetSentTimestamp, String recipient ) throws Error.Failure, Error.InvalidNumber; diff --git a/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java b/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java index 7be6a8e2..977dfa75 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java +++ b/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java @@ -278,6 +278,19 @@ public class DbusSignalImpl implements Signal { } } + @Override + public void sendViewedReceipt( + final String recipient, final List messageIds + ) throws Error.Failure, Error.UntrustedIdentity { + try { + m.sendViewedReceipt(getSingleRecipientIdentifier(recipient, m.getSelfNumber()), messageIds); + } catch (IOException e) { + throw new Error.Failure(e.getMessage()); + } catch (UntrustedIdentityException e) { + throw new Error.UntrustedIdentity(e.getMessage()); + } + } + @Override public void sendContacts() { try { diff --git a/src/main/java/org/asamk/signal/json/JsonReceiptMessage.java b/src/main/java/org/asamk/signal/json/JsonReceiptMessage.java index af7050b1..7cdd0b6a 100644 --- a/src/main/java/org/asamk/signal/json/JsonReceiptMessage.java +++ b/src/main/java/org/asamk/signal/json/JsonReceiptMessage.java @@ -4,17 +4,18 @@ import org.whispersystems.signalservice.api.messages.SignalServiceReceiptMessage import java.util.List; -record JsonReceiptMessage(long when, boolean isDelivery, boolean isRead, List timestamps) { +record JsonReceiptMessage(long when, boolean isDelivery, boolean isRead, boolean isViewed, List timestamps) { static JsonReceiptMessage from(SignalServiceReceiptMessage receiptMessage) { final var when = receiptMessage.getWhen(); final var isDelivery = receiptMessage.isDeliveryReceipt(); final var isRead = receiptMessage.isReadReceipt(); + final var isViewed = receiptMessage.isViewedReceipt(); final var timestamps = receiptMessage.getTimestamps(); - return new JsonReceiptMessage(when, isDelivery, isRead, timestamps); + return new JsonReceiptMessage(when, isDelivery, isRead, isViewed, timestamps); } static JsonReceiptMessage deliveryReceipt(final long when, final List timestamps) { - return new JsonReceiptMessage(when, true, false, timestamps); + return new JsonReceiptMessage(when, true, false, false, timestamps); } }