]> nmode's Git Repositories - signal-cli/commitdiff
Add typing message to json output
authorAsamK <asamk@gmx.de>
Sun, 17 Jan 2021 10:43:39 +0000 (11:43 +0100)
committerAsamK <asamk@gmx.de>
Sun, 17 Jan 2021 10:43:39 +0000 (11:43 +0100)
Fixes #423

src/main/java/org/asamk/signal/json/JsonMessageEnvelope.java
src/main/java/org/asamk/signal/json/JsonTypingMessage.java [new file with mode: 0644]

index 2a87d12907095a8f292f32f798dda52023547100..256b9751bef06753eaa5dda1131b4d4e5a5dd7da 100644 (file)
@@ -41,6 +41,10 @@ public class JsonMessageEnvelope {
     @JsonInclude(JsonInclude.Include.NON_NULL)
     final JsonReceiptMessage receiptMessage;
 
+    @JsonProperty
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    final JsonTypingMessage typingMessage;
+
     public JsonMessageEnvelope(SignalServiceEnvelope envelope, SignalServiceContent content, Manager m) {
         if (!envelope.isUnidentifiedSender() && envelope.hasSource()) {
             SignalServiceAddress source = envelope.getSourceAddress();
@@ -64,6 +68,9 @@ public class JsonMessageEnvelope {
         } else {
             this.receiptMessage = null;
         }
+        this.typingMessage = content != null && content.getTypingMessage().isPresent()
+                ? new JsonTypingMessage(content.getTypingMessage().get())
+                : null;
 
         this.dataMessage = content != null && content.getDataMessage().isPresent()
                 ? new JsonDataMessage(content.getDataMessage().get(), m)
@@ -85,6 +92,7 @@ public class JsonMessageEnvelope {
         dataMessage = new JsonDataMessage(messageReceived);
         syncMessage = null;
         callMessage = null;
+        typingMessage = null;
     }
 
     public JsonMessageEnvelope(Signal.ReceiptReceived receiptReceived) {
@@ -96,6 +104,7 @@ public class JsonMessageEnvelope {
         dataMessage = null;
         syncMessage = null;
         callMessage = null;
+        typingMessage = null;
     }
 
     public JsonMessageEnvelope(Signal.SyncMessageReceived messageReceived) {
@@ -107,5 +116,6 @@ public class JsonMessageEnvelope {
         dataMessage = null;
         syncMessage = new JsonSyncMessage(messageReceived);
         callMessage = null;
+        typingMessage = null;
     }
 }
diff --git a/src/main/java/org/asamk/signal/json/JsonTypingMessage.java b/src/main/java/org/asamk/signal/json/JsonTypingMessage.java
new file mode 100644 (file)
index 0000000..18548ce
--- /dev/null
@@ -0,0 +1,28 @@
+package org.asamk.signal.json;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import org.whispersystems.signalservice.api.messages.SignalServiceTypingMessage;
+
+import java.util.Base64;
+
+class JsonTypingMessage {
+
+    @JsonProperty
+    final String action;
+
+    @JsonProperty
+    final long timestamp;
+
+    @JsonProperty
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    final String groupId;
+
+    JsonTypingMessage(SignalServiceTypingMessage typingMessage) {
+        this.action = typingMessage.getAction().name();
+        this.timestamp = typingMessage.getTimestamp();
+        final Base64.Encoder encoder = Base64.getEncoder();
+        this.groupId = typingMessage.getGroupId().transform(encoder::encodeToString).orNull();
+    }
+}