]> nmode's Git Repositories - signal-cli/commitdiff
Implement viewedReceipt
authorJohn Freed <okgithub@johnfreed.com>
Sat, 30 Oct 2021 10:53:33 +0000 (12:53 +0200)
committerAsamK <asamk@gmx.de>
Sat, 30 Oct 2021 10:54:41 +0000 (12:54 +0200)
commit cd29144e81701698092f3334bee0c99c0f77f202
Merge: 14532be f884175
Author: AsamK <asamk@gmx.de>
Date:   Sat Oct 30 12:46:59 2021 +0200

    Merge branch 'master' into dbus_sendviewed

commit 14532befded0004d884f7f0ffa20a11ee5383c08
Author: John Freed <okgithub@johnfreed.com>
Date:   Thu Oct 7 08:24:00 2021 +0200

    update deliveryReceipt to conform

commit a9a6edaf3ff8ac81b1229db294d738f624688a0d
Author: John Freed <okgithub@johnfreed.com>
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

man/signal-cli-dbus.5.adoc
src/main/java/org/asamk/Signal.java
src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java
src/main/java/org/asamk/signal/json/JsonReceiptMessage.java

index 4c317db3dfc40dc3d7bd04982e2ec40d7536111d..1bc0b879fd201928c646d684b6d3bd8b03895488 100755 (executable)
@@ -462,6 +462,12 @@ sendReadReceipt(recipient<s>, targetSentTimestamps<ax>) -> <>::
 
 Exceptions: Failure, UntrustedIdentity
 
+sendViewedReceipt(recipient<s>, targetSentTimestamp<ax>) -> <>::
+* recipient             : Phone number of a single recipient
+* targetSentTimestamp   : Array of Longs to identify the corresponding signal messages
+
+Exceptions: Failure, UntrustedIdentity
+
 sendRemoteDeleteMessage(targetSentTimestamp<x>, recipient<s>) -> timestamp<x>::
 sendRemoteDeleteMessage(targetSentTimestamp<x>, recipients<as>) -> timestamp<x>::
 * targetSentTimestamp : Long representing timestamp of the message to delete
index 240930dc3d4094fdcc4c06610f091d176d5f59d7..18bdbdb563a604fd0fb41a5d5fe1e79a348b5ce1 100644 (file)
@@ -37,6 +37,10 @@ public interface Signal extends DBusInterface {
             String recipient, List<Long> messageIds
     ) throws Error.Failure, Error.UntrustedIdentity;
 
+    void sendViewedReceipt(
+            String recipient, List<Long> messageIds
+    ) throws Error.Failure, Error.UntrustedIdentity;
+
     long sendRemoteDeleteMessage(
             long targetSentTimestamp, String recipient
     ) throws Error.Failure, Error.InvalidNumber;
index 7be6a8e284317d210c19e8a75c9f3b07059ada75..977dfa758cc2ec98c8a3bcf3c72c84d36a942adc 100644 (file)
@@ -278,6 +278,19 @@ public class DbusSignalImpl implements Signal {
         }
     }
 
+    @Override
+    public void sendViewedReceipt(
+            final String recipient, final List<Long> 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 {
index af7050b1c7c729fdce7753ea83149b111d2245d3..7cdd0b6a5592168ba13b29cf6d1d3bdb403bc376 100644 (file)
@@ -4,17 +4,18 @@ import org.whispersystems.signalservice.api.messages.SignalServiceReceiptMessage
 
 import java.util.List;
 
-record JsonReceiptMessage(long when, boolean isDelivery, boolean isRead, List<Long> timestamps) {
+record JsonReceiptMessage(long when, boolean isDelivery, boolean isRead, boolean isViewed, List<Long> 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<Long> timestamps) {
-        return new JsonReceiptMessage(when, true, false, timestamps);
+        return new JsonReceiptMessage(when, true, false, false, timestamps);
     }
 }