]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/ReceiveMessageHandler.java
Refactor RecipientAddress
[signal-cli] / src / main / java / org / asamk / signal / ReceiveMessageHandler.java
index 314b0c6834cd728141e0cb1b701a393a97a534e5..f46a76f2ea7ef237971570bb69fffb001257026b 100644 (file)
@@ -1,11 +1,11 @@
 package org.asamk.signal;
 
 import org.asamk.signal.manager.Manager;
-import org.asamk.signal.manager.UntrustedIdentityException;
 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.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;
@@ -68,6 +68,10 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
             var message = envelope.data().get();
             printDataMessage(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 +111,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();
@@ -141,9 +150,12 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
         if (message.expiresInSeconds() > 0) {
             writer.println("Expires in: {} seconds", message.expiresInSeconds());
         }
-        if (message.hasProfileKey()) {
+        if (message.isProfileKeyUpdate()) {
             writer.println("Profile key update");
         }
+        if (message.hasProfileKey()) {
+            writer.println("With profile key");
+        }
         if (message.reaction().isPresent()) {
             writer.println("Reaction:");
             final var reaction = message.reaction().get();
@@ -173,6 +185,28 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
         }
     }
 
+    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
     ) {
@@ -298,8 +332,14 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
                         .println("Expiration started at: {}",
                                 DateUtils.formatTimestamp(sentTranscriptMessage.expirationStartTimestamp()));
             }
-            var message = sentTranscriptMessage.message();
-            printDataMessage(writer.indentedWriter(), message);
+            if (sentTranscriptMessage.message().isPresent()) {
+                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");
@@ -309,7 +349,7 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
                 writer.println("- {}", address.getLegacyIdentifier());
             }
             for (var groupId : blockedList.groupIds()) {
-                writer.println("- {}", groupId);
+                writer.println("- {}", groupId.toBase64());
             }
         }
         if (syncMessage.viewOnceOpen().isPresent()) {
@@ -490,6 +530,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());