Refactor SendReceiptAction to take type argument

This commit is contained in:
AsamK 2022-05-26 17:37:54 +02:00
parent e03c48e0ae
commit 8828b60288
3 changed files with 17 additions and 17 deletions

View file

@ -2,6 +2,7 @@ package org.asamk.signal.manager.actions;
import org.asamk.signal.manager.helper.Context; import org.asamk.signal.manager.helper.Context;
import org.asamk.signal.manager.storage.recipients.RecipientId; import org.asamk.signal.manager.storage.recipients.RecipientId;
import org.whispersystems.signalservice.api.messages.SignalServiceReceiptMessage;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -10,16 +11,22 @@ import java.util.Objects;
public class SendReceiptAction implements HandleAction { public class SendReceiptAction implements HandleAction {
private final RecipientId recipientId; private final RecipientId recipientId;
private final SignalServiceReceiptMessage.Type type;
private final List<Long> timestamps = new ArrayList<>(); 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.recipientId = recipientId;
this.type = type;
this.timestamps.add(timestamp); this.timestamps.add(timestamp);
} }
@Override @Override
public void execute(Context context) throws Throwable { 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 @Override
@ -34,13 +41,13 @@ public class SendReceiptAction implements HandleAction {
if (this == o) return true; if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false; if (o == null || getClass() != o.getClass()) return false;
final SendReceiptAction that = (SendReceiptAction) o; final SendReceiptAction that = (SendReceiptAction) o;
// Using only recipientId here on purpose // Using only recipientId and type here on purpose
return recipientId.equals(that.recipientId); return recipientId.equals(that.recipientId) && type == that.type;
} }
@Override @Override
public int hashCode() { public int hashCode() {
// Using only recipientId here on purpose // Using only recipientId and type here on purpose
return Objects.hash(recipientId); return Objects.hash(recipientId, type);
} }
} }

View file

@ -51,6 +51,7 @@ import org.whispersystems.signalservice.api.messages.SignalServiceContent;
import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage; import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage;
import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope; import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope;
import org.whispersystems.signalservice.api.messages.SignalServiceGroup; 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.SignalServiceSyncMessage;
import org.whispersystems.signalservice.api.messages.multidevice.StickerPackOperationMessage; import org.whispersystems.signalservice.api.messages.multidevice.StickerPackOperationMessage;
import org.whispersystems.signalservice.api.push.SignalServiceAddress; import org.whispersystems.signalservice.api.push.SignalServiceAddress;
@ -247,7 +248,9 @@ public final class IncomingMessageHandler {
var message = content.getDataMessage().get(); var message = content.getDataMessage().get();
if (content.isNeedsReceipt()) { if (content.isNeedsReceipt()) {
actions.add(new SendReceiptAction(sender, message.getTimestamp())); actions.add(new SendReceiptAction(sender,
SignalServiceReceiptMessage.Type.DELIVERY,
message.getTimestamp()));
} else { } else {
// Message wasn't sent as unidentified sender message // Message wasn't sent as unidentified sender message
final var contact = context.getAccount().getContactStore().getContact(sender); final var contact = context.getAccount().getContactStore().getContact(sender);

View file

@ -116,16 +116,6 @@ public class SendHelper {
return sendGroupMessage(message, recipientIds, distributionId, ContentHint.IMPLICIT); return sendGroupMessage(message, recipientIds, distributionId, ContentHint.IMPLICIT);
} }
public SendMessageResult sendDeliveryReceipt(
RecipientId recipientId, List<Long> messageIds
) {
var receiptMessage = new SignalServiceReceiptMessage(SignalServiceReceiptMessage.Type.DELIVERY,
messageIds,
System.currentTimeMillis());
return sendReceiptMessage(receiptMessage, recipientId);
}
public SendMessageResult sendReceiptMessage( public SendMessageResult sendReceiptMessage(
final SignalServiceReceiptMessage receiptMessage, final RecipientId recipientId final SignalServiceReceiptMessage receiptMessage, final RecipientId recipientId
) { ) {