]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/Signal.java
Implement configuration properties for dbus
[signal-cli] / src / main / java / org / asamk / Signal.java
index 349671b37bffb05e9fa058862046adb8b2afd6af..4e3514f753f3ec94fd819f1f4ab037f342f5dedb 100644 (file)
@@ -1,6 +1,5 @@
 package org.asamk;
 
-import org.asamk.signal.commands.exceptions.IOErrorException;
 import org.freedesktop.dbus.DBusPath;
 import org.freedesktop.dbus.Struct;
 import org.freedesktop.dbus.annotations.DBusProperty;
@@ -10,8 +9,10 @@ import org.freedesktop.dbus.exceptions.DBusExecutionException;
 import org.freedesktop.dbus.interfaces.DBusInterface;
 import org.freedesktop.dbus.interfaces.Properties;
 import org.freedesktop.dbus.messages.DBusSignal;
+import org.freedesktop.dbus.types.Variant;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * DBus interface for the org.asamk.Signal service.
@@ -37,6 +38,10 @@ public interface Signal extends DBusInterface {
             String recipient, List<Long> messageIds
     ) throws Error.Failure, Error.UntrustedIdentity;
 
+    void sendViewedReceipt(
+            String recipient, List<Long> messageIds
+    ) throws Error.Failure, Error.UntrustedIdentity;
+
     long sendRemoteDeleteMessage(
             long targetSentTimestamp, String recipient
     ) throws Error.Failure, Error.InvalidNumber;
@@ -160,7 +165,52 @@ public interface Signal extends DBusInterface {
 
     String uploadStickerPack(String stickerPackPath) throws Error.Failure;
 
-    void submitRateLimitChallenge(String challenge, String captchaString) throws IOErrorException;
+    void submitRateLimitChallenge(String challenge, String captchaString) throws Error.Failure;
+
+    class MessageReceivedV2 extends DBusSignal {
+
+        private final long timestamp;
+        private final String sender;
+        private final byte[] groupId;
+        private final String message;
+        private final Map<String, Variant<?>> extras;
+
+        public MessageReceivedV2(
+                String objectpath,
+                long timestamp,
+                String sender,
+                byte[] groupId,
+                String message,
+                final Map<String, Variant<?>> extras
+        ) throws DBusException {
+            super(objectpath, timestamp, sender, groupId, message, extras);
+            this.timestamp = timestamp;
+            this.sender = sender;
+            this.groupId = groupId;
+            this.message = message;
+            this.extras = extras;
+        }
+
+        public long getTimestamp() {
+            return timestamp;
+        }
+
+        public String getSender() {
+            return sender;
+        }
+
+        public byte[] getGroupId() {
+            return groupId;
+        }
+
+        public String getMessage() {
+            return message;
+        }
+
+        public Map<String, Variant<?>> getExtras() {
+            return extras;
+        }
+    }
 
     class MessageReceived extends DBusSignal {
 
@@ -227,6 +277,44 @@ public interface Signal extends DBusInterface {
         }
     }
 
+    class ReceiptReceivedV2 extends DBusSignal {
+
+        private final long timestamp;
+        private final String sender;
+        private final String type;
+        private final Map<String, Variant<?>> extras;
+
+        public ReceiptReceivedV2(
+                String objectpath,
+                long timestamp,
+                String sender,
+                final String type,
+                final Map<String, Variant<?>> extras
+        ) throws DBusException {
+            super(objectpath, timestamp, sender, type, extras);
+            this.timestamp = timestamp;
+            this.sender = sender;
+            this.type = type;
+            this.extras = extras;
+        }
+
+        public long getTimestamp() {
+            return timestamp;
+        }
+
+        public String getSender() {
+            return sender;
+        }
+
+        public String getReceiptType() {
+            return type;
+        }
+
+        public Map<String, Variant<?>> getExtras() {
+            return extras;
+        }
+    }
+
     class SyncMessageReceived extends DBusSignal {
 
         private final long timestamp;
@@ -279,6 +367,58 @@ public interface Signal extends DBusInterface {
         }
     }
 
+    class SyncMessageReceivedV2 extends DBusSignal {
+
+        private final long timestamp;
+        private final String source;
+        private final String destination;
+        private final byte[] groupId;
+        private final String message;
+        private final Map<String, Variant<?>> extras;
+
+        public SyncMessageReceivedV2(
+                String objectpath,
+                long timestamp,
+                String source,
+                String destination,
+                byte[] groupId,
+                String message,
+                final Map<String, Variant<?>> extras
+        ) throws DBusException {
+            super(objectpath, timestamp, source, destination, groupId, message, extras);
+            this.timestamp = timestamp;
+            this.source = source;
+            this.destination = destination;
+            this.groupId = groupId;
+            this.message = message;
+            this.extras = extras;
+        }
+
+        public long getTimestamp() {
+            return timestamp;
+        }
+
+        public String getSource() {
+            return source;
+        }
+
+        public String getDestination() {
+            return destination;
+        }
+
+        public byte[] getGroupId() {
+            return groupId;
+        }
+
+        public String getMessage() {
+            return message;
+        }
+
+        public Map<String, Variant<?>> getExtras() {
+            return extras;
+        }
+    }
+
     class StructDevice extends Struct {
 
         @Position(0)
@@ -318,6 +458,12 @@ public interface Signal extends DBusInterface {
         void removeDevice() throws Error.Failure;
     }
 
+    @DBusProperty(name = "ReadReceipts", type = Boolean.class)
+    @DBusProperty(name = "UnidentifiedDeliveryIndicators", type = Boolean.class)
+    @DBusProperty(name = "TypingIndicators", type = Boolean.class)
+    @DBusProperty(name = "LinkPreviews", type = Boolean.class)
+    interface Configuration extends DBusInterface, Properties {}
+
     class StructGroup extends Struct {
 
         @Position(0)
@@ -388,63 +534,67 @@ public interface Signal extends DBusInterface {
         class AttachmentInvalid extends DBusExecutionException {
 
             public AttachmentInvalid(final String message) {
-                super(message);
+                super("Invalid attachment: " + message);
             }
         }
 
         class InvalidUri extends DBusExecutionException {
 
             public InvalidUri(final String message) {
-                super(message);
+                super("Invalid uri: " + message);
             }
         }
 
         class Failure extends DBusExecutionException {
 
+            public Failure(final Exception e) {
+                super("Failure: " + e.getMessage() + " (" + e.getClass().getSimpleName() + ")");
+            }
+
             public Failure(final String message) {
-                super(message);
+                super("Failure: " + message);
             }
         }
 
         class DeviceNotFound extends DBusExecutionException {
 
             public DeviceNotFound(final String message) {
-                super(message);
+                super("Device not found: " + message);
             }
         }
 
         class GroupNotFound extends DBusExecutionException {
 
             public GroupNotFound(final String message) {
-                super(message);
+                super("Group not found: " + message);
             }
         }
 
         class InvalidGroupId extends DBusExecutionException {
 
             public InvalidGroupId(final String message) {
-                super(message);
+                super("Invalid group id: " + message);
             }
         }
 
         class LastGroupAdmin extends DBusExecutionException {
 
             public LastGroupAdmin(final String message) {
-                super(message);
+                super("Last group admin: " + message);
             }
         }
 
         class InvalidNumber extends DBusExecutionException {
 
             public InvalidNumber(final String message) {
-                super(message);
+                super("Invalid number: " + message);
             }
         }
 
         class UntrustedIdentity extends DBusExecutionException {
 
             public UntrustedIdentity(final String message) {
-                super(message);
+                super("Untrusted identity: " + message);
             }
         }
     }