]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/json/JsonDataMessage.java
Quotes, Mentions and Reactions in non-daemon JSON mode (#389)
[signal-cli] / src / main / java / org / asamk / signal / json / JsonDataMessage.java
index 7aa16ce4a9f0e27a3b7bbc8e4bcc831bc3d98e1c..957e3a792d77dc2e5cad3c87fb02166465936400 100644 (file)
@@ -1,9 +1,11 @@
 package org.asamk.signal.json;
 
 import org.asamk.Signal;
 package org.asamk.signal.json;
 
 import org.asamk.Signal;
+import org.asamk.signal.manager.Manager;
 import org.whispersystems.signalservice.api.messages.SignalServiceAttachment;
 import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage;
 import org.whispersystems.signalservice.api.messages.SignalServiceGroup;
 import org.whispersystems.signalservice.api.messages.SignalServiceAttachment;
 import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage;
 import org.whispersystems.signalservice.api.messages.SignalServiceGroup;
+import org.whispersystems.signalservice.api.messages.SignalServiceGroupV2;
 
 import java.util.ArrayList;
 import java.util.List;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -14,19 +16,42 @@ class JsonDataMessage {
     long timestamp;
     String message;
     int expiresInSeconds;
     long timestamp;
     String message;
     int expiresInSeconds;
+
+    JsonReaction reaction;
+    JsonQuote quote;
+    List<JsonMention> mentions;
     List<JsonAttachment> attachments;
     JsonGroupInfo groupInfo;
 
     List<JsonAttachment> attachments;
     JsonGroupInfo groupInfo;
 
-    JsonDataMessage(SignalServiceDataMessage dataMessage) {
+    JsonDataMessage(SignalServiceDataMessage dataMessage, Manager m) {
         this.timestamp = dataMessage.getTimestamp();
         this.timestamp = dataMessage.getTimestamp();
-        if (dataMessage.getGroupContext().isPresent() && dataMessage.getGroupContext().get().getGroupV1().isPresent()) {
-            SignalServiceGroup groupInfo = dataMessage.getGroupContext().get().getGroupV1().get();
-            this.groupInfo = new JsonGroupInfo(groupInfo);
+        if (dataMessage.getGroupContext().isPresent()) {
+            if (dataMessage.getGroupContext().get().getGroupV1().isPresent()) {
+                SignalServiceGroup groupInfo = dataMessage.getGroupContext().get().getGroupV1().get();
+                this.groupInfo = new JsonGroupInfo(groupInfo);
+            } else if (dataMessage.getGroupContext().get().getGroupV2().isPresent()) {
+                SignalServiceGroupV2 groupInfo = dataMessage.getGroupContext().get().getGroupV2().get();
+                this.groupInfo = new JsonGroupInfo(groupInfo);
+            }
         }
         if (dataMessage.getBody().isPresent()) {
             this.message = dataMessage.getBody().get();
         }
         this.expiresInSeconds = dataMessage.getExpiresInSeconds();
         }
         if (dataMessage.getBody().isPresent()) {
             this.message = dataMessage.getBody().get();
         }
         this.expiresInSeconds = dataMessage.getExpiresInSeconds();
+        if (dataMessage.getReaction().isPresent()) {
+            this.reaction = new JsonReaction(dataMessage.getReaction().get(), m);
+        }
+        if (dataMessage.getQuote().isPresent()) {
+            this.quote = new JsonQuote(dataMessage.getQuote().get(), m);
+        }
+        if (dataMessage.getMentions().isPresent()) {
+            this.mentions = new ArrayList<>(dataMessage.getMentions().get().size());
+            for (SignalServiceDataMessage.Mention mention : dataMessage.getMentions().get()) {
+                this.mentions.add(new JsonMention(mention, m));
+            }
+        } else {
+            this.mentions = new ArrayList<>();
+        }
         if (dataMessage.getAttachments().isPresent()) {
             this.attachments = new ArrayList<>(dataMessage.getAttachments().get().size());
             for (SignalServiceAttachment attachment : dataMessage.getAttachments().get()) {
         if (dataMessage.getAttachments().isPresent()) {
             this.attachments = new ArrayList<>(dataMessage.getAttachments().get().size());
             for (SignalServiceAttachment attachment : dataMessage.getAttachments().get()) {
@@ -41,6 +66,9 @@ class JsonDataMessage {
         timestamp = messageReceived.getTimestamp();
         message = messageReceived.getMessage();
         groupInfo = new JsonGroupInfo(messageReceived.getGroupId());
         timestamp = messageReceived.getTimestamp();
         message = messageReceived.getMessage();
         groupInfo = new JsonGroupInfo(messageReceived.getGroupId());
+        reaction = null;    // TODO Replace these 3 with the proper commands
+        quote = null;
+        mentions = null;
         attachments = messageReceived.getAttachments().stream().map(JsonAttachment::new).collect(Collectors.toList());
     }
 
         attachments = messageReceived.getAttachments().stream().map(JsonAttachment::new).collect(Collectors.toList());
     }
 
@@ -48,6 +76,9 @@ class JsonDataMessage {
         timestamp = messageReceived.getTimestamp();
         message = messageReceived.getMessage();
         groupInfo = new JsonGroupInfo(messageReceived.getGroupId());
         timestamp = messageReceived.getTimestamp();
         message = messageReceived.getMessage();
         groupInfo = new JsonGroupInfo(messageReceived.getGroupId());
+        reaction = null;    // TODO Replace these 3 with the proper commands
+        quote = null;
+        mentions = null;
         attachments = messageReceived.getAttachments().stream().map(JsonAttachment::new).collect(Collectors.toList());
     }
 }
         attachments = messageReceived.getAttachments().stream().map(JsonAttachment::new).collect(Collectors.toList());
     }
 }