From: AsamK Date: Thu, 26 May 2022 15:37:54 +0000 (+0200) Subject: Refactor SendReceiptAction to take type argument X-Git-Tag: v0.10.7~4 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/8828b60288d754dde7fe048460a2c95152ce516e?ds=inline Refactor SendReceiptAction to take type argument --- diff --git a/lib/src/main/java/org/asamk/signal/manager/actions/SendReceiptAction.java b/lib/src/main/java/org/asamk/signal/manager/actions/SendReceiptAction.java index 89a1aaa8..c08438b5 100644 --- a/lib/src/main/java/org/asamk/signal/manager/actions/SendReceiptAction.java +++ b/lib/src/main/java/org/asamk/signal/manager/actions/SendReceiptAction.java @@ -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 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); } } diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/IncomingMessageHandler.java b/lib/src/main/java/org/asamk/signal/manager/helper/IncomingMessageHandler.java index 37616d6e..519d01b4 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/IncomingMessageHandler.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/IncomingMessageHandler.java @@ -51,6 +51,7 @@ import org.whispersystems.signalservice.api.messages.SignalServiceContent; import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage; import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope; import org.whispersystems.signalservice.api.messages.SignalServiceGroup; +import org.whispersystems.signalservice.api.messages.SignalServiceReceiptMessage; import org.whispersystems.signalservice.api.messages.multidevice.SignalServiceSyncMessage; import org.whispersystems.signalservice.api.messages.multidevice.StickerPackOperationMessage; import org.whispersystems.signalservice.api.push.SignalServiceAddress; @@ -247,7 +248,9 @@ public final class IncomingMessageHandler { var message = content.getDataMessage().get(); if (content.isNeedsReceipt()) { - actions.add(new SendReceiptAction(sender, message.getTimestamp())); + actions.add(new SendReceiptAction(sender, + SignalServiceReceiptMessage.Type.DELIVERY, + message.getTimestamp())); } else { // Message wasn't sent as unidentified sender message final var contact = context.getAccount().getContactStore().getContact(sender); diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/SendHelper.java b/lib/src/main/java/org/asamk/signal/manager/helper/SendHelper.java index 85d5cc32..758fe1b9 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/SendHelper.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/SendHelper.java @@ -116,16 +116,6 @@ public class SendHelper { return sendGroupMessage(message, recipientIds, distributionId, ContentHint.IMPLICIT); } - public SendMessageResult sendDeliveryReceipt( - RecipientId recipientId, List messageIds - ) { - var receiptMessage = new SignalServiceReceiptMessage(SignalServiceReceiptMessage.Type.DELIVERY, - messageIds, - System.currentTimeMillis()); - - return sendReceiptMessage(receiptMessage, recipientId); - } - public SendMessageResult sendReceiptMessage( final SignalServiceReceiptMessage receiptMessage, final RecipientId recipientId ) {