]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/ReceiveMessageHandler.java
Implement EditMessageReceived signal for dbus
[signal-cli] / src / main / java / org / asamk / signal / ReceiveMessageHandler.java
index 390087f9d37b4254fc88d136da71549a2508d174..faea75dcbe0858b648809f56f117d0a17e6cc6fe 100644 (file)
@@ -1,11 +1,12 @@
 package org.asamk.signal;
 
 import org.asamk.signal.manager.Manager;
+import org.asamk.signal.manager.api.GroupId;
 import org.asamk.signal.manager.api.MessageEnvelope;
+import org.asamk.signal.manager.api.RecipientAddress;
 import org.asamk.signal.manager.api.RecipientIdentifier;
+import org.asamk.signal.manager.api.TextStyle;
 import org.asamk.signal.manager.api.UntrustedIdentityException;
-import org.asamk.signal.manager.groups.GroupId;
-import org.asamk.signal.manager.storage.recipients.RecipientAddress;
 import org.asamk.signal.output.PlainTextWriter;
 import org.asamk.signal.util.DateUtils;
 import org.asamk.signal.util.Hex;
@@ -33,9 +34,10 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
 
     private void handleMessageInternal(MessageEnvelope envelope, Throwable exception) {
         var source = envelope.sourceAddress();
-        writer.println("Envelope from: {} (device: {})",
+        writer.println("Envelope from: {} (device: {}) to {}",
                 source.map(this::formatContact).orElse("unknown source"),
-                envelope.sourceDevice());
+                envelope.sourceDevice(),
+                m.getSelfNumber());
         writer.println("Timestamp: {}", DateUtils.formatTimestamp(envelope.timestamp()));
         writer.println("Server timestamps: received: {} delivered: {}",
                 DateUtils.formatTimestamp(envelope.serverReceivedTimestamp()),
@@ -68,6 +70,14 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
             var message = envelope.data().get();
             printDataMessage(writer, message);
         }
+        if (envelope.edit().isPresent()) {
+            var message = envelope.edit().get();
+            printEditMessage(writer, message);
+        }
+        if (envelope.story().isPresent()) {
+            var message = envelope.story().get();
+            printStoryMessage(writer.indentedWriter(), message);
+        }
         if (envelope.sync().isPresent()) {
             writer.println("Received a sync message");
             var syncMessage = envelope.sync().get();
@@ -107,6 +117,11 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
             final var groupContext = message.groupContext().get();
             printGroupContext(writer.indentedWriter(), groupContext);
         }
+        if (message.storyContext().isPresent()) {
+            writer.println("Story reply:");
+            final var storyContext = message.storyContext().get();
+            printStoryContext(writer.indentedWriter(), storyContext);
+        }
         if (message.groupCallUpdate().isPresent()) {
             writer.println("Group call update:");
             final var groupCallUpdate = message.groupCallUpdate().get();
@@ -167,6 +182,12 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
                 printMention(writer, mention);
             }
         }
+        if (message.textStyles().size() > 0) {
+            writer.println("Text styles:");
+            for (var textStyle : message.textStyles()) {
+                printTextStyle(writer, textStyle);
+            }
+        }
         if (message.attachments().size() > 0) {
             writer.println("Attachments:");
             for (var attachment : message.attachments()) {
@@ -176,6 +197,35 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
         }
     }
 
+    private void printEditMessage(
+            PlainTextWriter writer, MessageEnvelope.Edit message
+    ) {
+        writer.println("Edit: Target message timestamp: {}", DateUtils.formatTimestamp(message.targetSentTimestamp()));
+        printDataMessage(writer.indentedWriter(), message.dataMessage());
+    }
+
+    private void printStoryMessage(
+            PlainTextWriter writer, MessageEnvelope.Story message
+    ) {
+        writer.println("Story: with replies: {}", message.allowsReplies());
+        if (message.groupId().isPresent()) {
+            writer.println("Group info:");
+            printGroupInfo(writer.indentedWriter(), message.groupId().get());
+        }
+        if (message.textAttachment().isPresent()) {
+            writer.println("Body: {}", message.textAttachment().get().text().orElse(""));
+
+            if (message.textAttachment().get().preview().isPresent()) {
+                writer.println("Preview:");
+                printPreview(writer.indentedWriter(), message.textAttachment().get().preview().get());
+            }
+        }
+        if (message.fileAttachment().isPresent()) {
+            writer.println("Attachments:");
+            printAttachment(writer.indentedWriter(), message.fileAttachment().get());
+        }
+    }
+
     private void printTypingMessage(
             final PlainTextWriter writer, final MessageEnvelope.Typing typingMessage
     ) {
@@ -305,6 +355,10 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
                 var message = sentTranscriptMessage.message().get();
                 printDataMessage(writer.indentedWriter(), message);
             }
+            if (sentTranscriptMessage.story().isPresent()) {
+                var message = sentTranscriptMessage.story().get();
+                printStoryMessage(writer.indentedWriter(), message);
+            }
         }
         if (syncMessage.blocked().isPresent()) {
             writer.println("Received sync message with block list");
@@ -495,6 +549,13 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
         writer.println("Type: {}", groupContext.isGroupUpdate() ? "UPDATE" : "DELIVER");
     }
 
+    private void printStoryContext(
+            final PlainTextWriter writer, final MessageEnvelope.Data.StoryContext storyContext
+    ) {
+        writer.println("Sender: {}", formatContact(storyContext.author()));
+        writer.println("Sent timestamp: {}", storyContext.sentTimestamp());
+    }
+
     private void printGroupInfo(final PlainTextWriter writer, final GroupId groupId) {
         writer.println("Id: {}", groupId.toBase64());
 
@@ -512,6 +573,12 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
         writer.println("- {}: {} (length: {})", formatContact(mention.recipient()), mention.start(), mention.length());
     }
 
+    private void printTextStyle(
+            PlainTextWriter writer, TextStyle textStyle
+    ) {
+        writer.println("- {}: {} (length: {})", textStyle.style().name(), textStyle.start(), textStyle.length());
+    }
+
     private void printAttachment(PlainTextWriter writer, MessageEnvelope.Data.Attachment attachment) {
         writer.println("Content-Type: {}", attachment.contentType());
         writer.println("Type: {}", attachment.id().isPresent() ? "Pointer" : "Stream");