X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/fc8b6d0fcbedd6a4c9ae394a0640e79690e28337..fea19c9e20ed07228420dae93399911a659e51b1:/src/main/java/org/asamk/signal/ReceiveMessageHandler.java diff --git a/src/main/java/org/asamk/signal/ReceiveMessageHandler.java b/src/main/java/org/asamk/signal/ReceiveMessageHandler.java index b76817c3..87753b05 100644 --- a/src/main/java/org/asamk/signal/ReceiveMessageHandler.java +++ b/src/main/java/org/asamk/signal/ReceiveMessageHandler.java @@ -1,17 +1,17 @@ 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; import org.slf4j.helpers.MessageFormatter; import java.util.ArrayList; -import java.util.Base64; import java.util.stream.Collectors; public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler { @@ -33,9 +33,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 +69,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 +112,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 +151,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 +186,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 +333,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 +350,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()) { @@ -349,8 +390,7 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler { private void printSticker( final PlainTextWriter writer, final MessageEnvelope.Data.Sticker sticker ) { - writer.println("Pack id: {}", Base64.getEncoder().encodeToString(sticker.packId())); - writer.println("Pack key: {}", Base64.getEncoder().encodeToString(sticker.packKey())); + writer.println("Pack id: {}", Hex.toStringCondensed(sticker.packId().serialize())); writer.println("Sticker id: {}", sticker.stickerId()); } @@ -491,6 +531,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());