]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/ReceiveMessageHandler.java
Refactor output writers
[signal-cli] / src / main / java / org / asamk / signal / ReceiveMessageHandler.java
index e63ce548fa98029773833a15cb0e13df5741a2a3..323b6edfa2da295ca62d745cd7699a8c9591dde8 100644 (file)
@@ -20,21 +20,24 @@ import org.whispersystems.signalservice.api.messages.shared.SharedContact;
 import org.whispersystems.signalservice.api.push.SignalServiceAddress;
 import org.whispersystems.signalservice.api.util.InvalidNumberException;
 
+import java.util.ArrayList;
 import java.util.Base64;
 import java.util.stream.Collectors;
 
+import static org.asamk.signal.util.Util.getLegacyIdentifier;
+
 public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
 
     final Manager m;
+    final PlainTextWriter writer;
 
-    public ReceiveMessageHandler(Manager m) {
+    public ReceiveMessageHandler(Manager m, final PlainTextWriter writer) {
         this.m = m;
+        this.writer = writer;
     }
 
     @Override
     public void handleMessage(SignalServiceEnvelope envelope, SignalServiceContent content, Throwable exception) {
-        PlainTextWriter writer = new PlainTextWriterImpl(System.out);
-
         if (envelope.hasSource()) {
             var source = envelope.getSourceAddress();
             writer.println("Envelope from: {} (device: {})", formatContact(source), envelope.getSourceDevice());
@@ -57,7 +60,7 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
                     var e = (ProtocolUntrustedIdentityException) exception;
                     writer.println(
                             "The user’s key is untrusted, either the user has reinstalled Signal or a third party sent this message.");
-                    final var recipientName = m.resolveSignalServiceAddress(e.getSender()).getLegacyIdentifier();
+                    final var recipientName = getLegacyIdentifier(m.resolveSignalServiceAddress(e.getSender()));
                     writer.println(
                             "Use 'signal-cli -u {} listIdentities -n {}', verify the key and run 'signal-cli -u {} trust -v \"FINGER_PRINT\" {}' to mark it as trusted",
                             m.getUsername(),
@@ -285,6 +288,14 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
                         DateUtils.formatTimestamp(rm.getTimestamp()));
             }
         }
+        if (syncMessage.getViewed().isPresent()) {
+            writer.println("Received sync viewed messages list");
+            for (var vm : syncMessage.getViewed().get()) {
+                writer.println("- From: {} Message timestamp: {}",
+                        formatContact(vm.getSender()),
+                        DateUtils.formatTimestamp(vm.getTimestamp()));
+            }
+        }
         if (syncMessage.getRequest().isPresent()) {
             String type;
             if (syncMessage.getRequest().get().isContactsRequest()) {
@@ -332,7 +343,7 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
             writer.println("Blocked numbers:");
             final var blockedList = syncMessage.getBlockedList().get();
             for (var address : blockedList.getAddresses()) {
-                writer.println("- {}", address.getLegacyIdentifier());
+                writer.println("- {}", getLegacyIdentifier(address));
             }
         }
         if (syncMessage.getVerified().isPresent()) {
@@ -448,7 +459,7 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
             final PlainTextWriter writer, final SignalServiceDataMessage.Quote quote
     ) {
         writer.println("Id: {}", quote.getId());
-        writer.println("Author: {}", m.resolveSignalServiceAddress(quote.getAuthor()).getLegacyIdentifier());
+        writer.println("Author: {}", getLegacyIdentifier(m.resolveSignalServiceAddress(quote.getAuthor())));
         writer.println("Text: {}", quote.getText());
         if (quote.getMentions() != null && quote.getMentions().size() > 0) {
             writer.println("Mentions:");
@@ -643,8 +654,19 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
                     pointer.getPreview().isPresent() ? " (Preview is available: "
                             + pointer.getPreview().get().length
                             + " bytes)" : "");
-            writer.println("Voice note: {}", pointer.getVoiceNote() ? "yes" : "no");
-            writer.println("Borderless: {}", pointer.isBorderless() ? "yes" : "no");
+            final var flags = new ArrayList<String>();
+            if (pointer.getVoiceNote()) {
+                flags.add("voice note");
+            }
+            if (pointer.isBorderless()) {
+                flags.add("borderless");
+            }
+            if (pointer.isGif()) {
+                flags.add("video gif");
+            }
+            if (flags.size() > 0) {
+                writer.println("Flags: {}", String.join(", ", flags));
+            }
             if (pointer.getWidth() > 0 || pointer.getHeight() > 0) {
                 writer.println("Dimensions: {}x{}", pointer.getWidth(), pointer.getHeight());
             }
@@ -656,7 +678,7 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
     }
 
     private String formatContact(SignalServiceAddress address) {
-        final var number = address.getLegacyIdentifier();
+        final var number = getLegacyIdentifier(address);
         String name = null;
         try {
             name = m.getContactOrProfileName(number);