]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/actions/SendReceiptAction.java
Refactor SendReceiptAction to take type argument
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / actions / SendReceiptAction.java
index 89a1aaa8cdb76e9626e0e6c3497af98fa6dbc7c7..c08438b5bc529b266217ff0bfd375b09acb76666 100644 (file)
@@ -2,6 +2,7 @@ package org.asamk.signal.manager.actions;
 
 import org.asamk.signal.manager.helper.Context;
 import org.asamk.signal.manager.storage.recipients.RecipientId;
+import org.whispersystems.signalservice.api.messages.SignalServiceReceiptMessage;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -10,16 +11,22 @@ import java.util.Objects;
 public class SendReceiptAction implements HandleAction {
 
     private final RecipientId recipientId;
+    private final SignalServiceReceiptMessage.Type type;
     private final List<Long> timestamps = new ArrayList<>();
 
-    public SendReceiptAction(final RecipientId recipientId, final long timestamp) {
+    public SendReceiptAction(
+            final RecipientId recipientId, final SignalServiceReceiptMessage.Type type, final long timestamp
+    ) {
         this.recipientId = recipientId;
+        this.type = type;
         this.timestamps.add(timestamp);
     }
 
     @Override
     public void execute(Context context) throws Throwable {
-        context.getSendHelper().sendDeliveryReceipt(recipientId, timestamps);
+        final var receiptMessage = new SignalServiceReceiptMessage(type, timestamps, System.currentTimeMillis());
+
+        context.getSendHelper().sendReceiptMessage(receiptMessage, recipientId);
     }
 
     @Override
@@ -34,13 +41,13 @@ public class SendReceiptAction implements HandleAction {
         if (this == o) return true;
         if (o == null || getClass() != o.getClass()) return false;
         final SendReceiptAction that = (SendReceiptAction) o;
-        // Using only recipientId here on purpose
-        return recipientId.equals(that.recipientId);
+        // Using only recipientId and type here on purpose
+        return recipientId.equals(that.recipientId) && type == that.type;
     }
 
     @Override
     public int hashCode() {
-        // Using only recipientId here on purpose
-        return Objects.hash(recipientId);
+        // Using only recipientId and type here on purpose
+        return Objects.hash(recipientId, type);
     }
 }