]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/HandleAction.java
Extract lib module
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / HandleAction.java
diff --git a/lib/src/main/java/org/asamk/signal/manager/HandleAction.java b/lib/src/main/java/org/asamk/signal/manager/HandleAction.java
new file mode 100644 (file)
index 0000000..8338e4e
--- /dev/null
@@ -0,0 +1,159 @@
+package org.asamk.signal.manager;
+
+import org.asamk.signal.manager.groups.GroupIdV1;
+import org.whispersystems.signalservice.api.push.SignalServiceAddress;
+
+import java.util.Objects;
+
+interface HandleAction {
+
+    void execute(Manager m) throws Throwable;
+}
+
+class SendReceiptAction implements HandleAction {
+
+    private final SignalServiceAddress address;
+    private final long timestamp;
+
+    public SendReceiptAction(final SignalServiceAddress address, final long timestamp) {
+        this.address = address;
+        this.timestamp = timestamp;
+    }
+
+    @Override
+    public void execute(Manager m) throws Throwable {
+        m.sendReceipt(address, timestamp);
+    }
+
+    @Override
+    public boolean equals(final Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        final SendReceiptAction that = (SendReceiptAction) o;
+        return timestamp == that.timestamp && address.equals(that.address);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(address, timestamp);
+    }
+}
+
+class SendSyncContactsAction implements HandleAction {
+
+    private static final SendSyncContactsAction INSTANCE = new SendSyncContactsAction();
+
+    private SendSyncContactsAction() {
+    }
+
+    public static SendSyncContactsAction create() {
+        return INSTANCE;
+    }
+
+    @Override
+    public void execute(Manager m) throws Throwable {
+        m.sendContacts();
+    }
+}
+
+class SendSyncGroupsAction implements HandleAction {
+
+    private static final SendSyncGroupsAction INSTANCE = new SendSyncGroupsAction();
+
+    private SendSyncGroupsAction() {
+    }
+
+    public static SendSyncGroupsAction create() {
+        return INSTANCE;
+    }
+
+    @Override
+    public void execute(Manager m) throws Throwable {
+        m.sendGroups();
+    }
+}
+
+class SendSyncBlockedListAction implements HandleAction {
+
+    private static final SendSyncBlockedListAction INSTANCE = new SendSyncBlockedListAction();
+
+    private SendSyncBlockedListAction() {
+    }
+
+    public static SendSyncBlockedListAction create() {
+        return INSTANCE;
+    }
+
+    @Override
+    public void execute(Manager m) throws Throwable {
+        m.sendBlockedList();
+    }
+}
+
+class SendGroupInfoRequestAction implements HandleAction {
+
+    private final SignalServiceAddress address;
+    private final GroupIdV1 groupId;
+
+    public SendGroupInfoRequestAction(final SignalServiceAddress address, final GroupIdV1 groupId) {
+        this.address = address;
+        this.groupId = groupId;
+    }
+
+    @Override
+    public void execute(Manager m) throws Throwable {
+        m.sendGroupInfoRequest(groupId, address);
+    }
+
+    @Override
+    public boolean equals(final Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        final SendGroupInfoRequestAction that = (SendGroupInfoRequestAction) o;
+
+        if (!address.equals(that.address)) return false;
+        return groupId.equals(that.groupId);
+    }
+
+    @Override
+    public int hashCode() {
+        int result = address.hashCode();
+        result = 31 * result + groupId.hashCode();
+        return result;
+    }
+}
+
+class SendGroupInfoAction implements HandleAction {
+
+    private final SignalServiceAddress address;
+    private final GroupIdV1 groupId;
+
+    public SendGroupInfoAction(final SignalServiceAddress address, final GroupIdV1 groupId) {
+        this.address = address;
+        this.groupId = groupId;
+    }
+
+    @Override
+    public void execute(Manager m) throws Throwable {
+        m.sendGroupInfoMessage(groupId, address);
+    }
+
+    @Override
+    public boolean equals(final Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        final SendGroupInfoAction that = (SendGroupInfoAction) o;
+
+        if (!address.equals(that.address)) return false;
+        return groupId.equals(that.groupId);
+    }
+
+    @Override
+    public int hashCode() {
+        int result = address.hashCode();
+        result = 31 * result + groupId.hashCode();
+        return result;
+    }
+}