]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/actions/ResendMessageAction.java
Implement MessageSendLog for resending after encryption error
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / actions / ResendMessageAction.java
diff --git a/lib/src/main/java/org/asamk/signal/manager/actions/ResendMessageAction.java b/lib/src/main/java/org/asamk/signal/manager/actions/ResendMessageAction.java
new file mode 100644 (file)
index 0000000..9f399dd
--- /dev/null
@@ -0,0 +1,42 @@
+package org.asamk.signal.manager.actions;
+
+import org.asamk.signal.manager.helper.Context;
+import org.asamk.signal.manager.storage.recipients.RecipientId;
+import org.asamk.signal.manager.storage.sendLog.MessageSendLogEntry;
+
+import java.util.Objects;
+
+public class ResendMessageAction implements HandleAction {
+
+    private final RecipientId recipientId;
+    private final long timestamp;
+    private final MessageSendLogEntry messageSendLogEntry;
+
+    public ResendMessageAction(
+            final RecipientId recipientId, final long timestamp, final MessageSendLogEntry messageSendLogEntry
+    ) {
+        this.recipientId = recipientId;
+        this.timestamp = timestamp;
+        this.messageSendLogEntry = messageSendLogEntry;
+    }
+
+    @Override
+    public void execute(Context context) throws Throwable {
+        context.getSendHelper().resendMessage(recipientId, timestamp, messageSendLogEntry);
+    }
+
+    @Override
+    public boolean equals(final Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        final ResendMessageAction that = (ResendMessageAction) o;
+        return timestamp == that.timestamp
+                && recipientId.equals(that.recipientId)
+                && messageSendLogEntry.equals(that.messageSendLogEntry);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(recipientId, timestamp, messageSendLogEntry);
+    }
+}