]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/json/JsonDataMessage.java
Restrict blocking of group to master device
[signal-cli] / src / main / java / org / asamk / signal / json / JsonDataMessage.java
index 4636d80896b27051e4cc4aa0c2937aea5c0b5ecc..6dbda9783e5b081eac7533e94b6c2b8cc7b5beb2 100644 (file)
@@ -6,9 +6,6 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import org.asamk.Signal;
 import org.asamk.signal.manager.Manager;
 import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage;
-import org.whispersystems.signalservice.api.messages.SignalServiceGroup;
-import org.whispersystems.signalservice.api.messages.SignalServiceGroupContext;
-import org.whispersystems.signalservice.api.messages.SignalServiceGroupV2;
 
 import java.util.List;
 import java.util.stream.Collectors;
@@ -48,6 +45,14 @@ class JsonDataMessage {
     @JsonInclude(JsonInclude.Include.NON_NULL)
     final JsonSticker sticker;
 
+    @JsonProperty
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    final JsonRemoteDelete remoteDelete;
+
+    @JsonProperty
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    final List<JsonSharedContact> contacts;
+
     @JsonProperty
     @JsonInclude(JsonInclude.Include.NON_NULL)
     final JsonGroupInfo groupInfo;
@@ -55,12 +60,12 @@ class JsonDataMessage {
     JsonDataMessage(SignalServiceDataMessage dataMessage, Manager m) {
         this.timestamp = dataMessage.getTimestamp();
         if (dataMessage.getGroupContext().isPresent()) {
-            final SignalServiceGroupContext groupContext = dataMessage.getGroupContext().get();
+            final var groupContext = dataMessage.getGroupContext().get();
             if (groupContext.getGroupV1().isPresent()) {
-                SignalServiceGroup groupInfo = groupContext.getGroupV1().get();
+                var groupInfo = groupContext.getGroupV1().get();
                 this.groupInfo = new JsonGroupInfo(groupInfo);
             } else if (groupContext.getGroupV2().isPresent()) {
-                SignalServiceGroupV2 groupInfo = groupContext.getGroupV2().get();
+                var groupInfo = groupContext.getGroupV2().get();
                 this.groupInfo = new JsonGroupInfo(groupInfo);
             } else {
                 this.groupInfo = null;
@@ -84,6 +89,8 @@ class JsonDataMessage {
         } else {
             this.mentions = List.of();
         }
+        remoteDelete = dataMessage.getRemoteDelete().isPresent() ? new JsonRemoteDelete(dataMessage.getRemoteDelete()
+                .get()) : null;
         if (dataMessage.getAttachments().isPresent()) {
             this.attachments = dataMessage.getAttachments()
                     .get()
@@ -94,6 +101,16 @@ class JsonDataMessage {
             this.attachments = List.of();
         }
         this.sticker = dataMessage.getSticker().isPresent() ? new JsonSticker(dataMessage.getSticker().get()) : null;
+
+        if (dataMessage.getSharedContacts().isPresent()) {
+            this.contacts = dataMessage.getSharedContacts()
+                    .get()
+                    .stream()
+                    .map(JsonSharedContact::new)
+                    .collect(Collectors.toList());
+        } else {
+            this.contacts = List.of();
+        }
     }
 
     public JsonDataMessage(Signal.MessageReceived messageReceived) {
@@ -102,10 +119,12 @@ class JsonDataMessage {
         groupInfo = messageReceived.getGroupId().length > 0 ? new JsonGroupInfo(messageReceived.getGroupId()) : null;
         expiresInSeconds = null;
         viewOnce = null;
-        reaction = null;    // TODO Replace these 4 with the proper commands
+        remoteDelete = null;
+        reaction = null;    // TODO Replace these 5 with the proper commands
         quote = null;
         mentions = null;
         sticker = null;
+        contacts = null;
         attachments = messageReceived.getAttachments().stream().map(JsonAttachment::new).collect(Collectors.toList());
     }
 
@@ -115,10 +134,12 @@ class JsonDataMessage {
         groupInfo = messageReceived.getGroupId().length > 0 ? new JsonGroupInfo(messageReceived.getGroupId()) : null;
         expiresInSeconds = null;
         viewOnce = null;
-        reaction = null;    // TODO Replace these 4 with the proper commands
+        remoteDelete = null;
+        reaction = null;    // TODO Replace these 5 with the proper commands
         quote = null;
         mentions = null;
         sticker = null;
+        contacts = null;
         attachments = messageReceived.getAttachments().stream().map(JsonAttachment::new).collect(Collectors.toList());
     }
 }