]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/json/JsonMessageEnvelope.java
Include source name in JSON output (#663)
[signal-cli] / src / main / java / org / asamk / signal / json / JsonMessageEnvelope.java
index 256b9751bef06753eaa5dda1131b4d4e5a5dd7da..40f5ed216f39681166f53ccf73834e63920ae8f8 100644 (file)
@@ -7,19 +7,25 @@ import org.asamk.Signal;
 import org.asamk.signal.manager.Manager;
 import org.whispersystems.signalservice.api.messages.SignalServiceContent;
 import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope;
-import org.whispersystems.signalservice.api.push.SignalServiceAddress;
+import org.whispersystems.signalservice.api.util.InvalidNumberException;
 
 import java.util.List;
 
+import static org.asamk.signal.util.Util.getLegacyIdentifier;
+
 public class JsonMessageEnvelope {
 
     @JsonProperty
     final String source;
 
+    @JsonProperty
+    final String sourceName;
+
     @JsonProperty
     final Integer sourceDevice;
 
     @JsonProperty
+    @JsonInclude(JsonInclude.Include.NON_NULL)
     final String relay;
 
     @JsonProperty
@@ -47,12 +53,12 @@ public class JsonMessageEnvelope {
 
     public JsonMessageEnvelope(SignalServiceEnvelope envelope, SignalServiceContent content, Manager m) {
         if (!envelope.isUnidentifiedSender() && envelope.hasSource()) {
-            SignalServiceAddress source = envelope.getSourceAddress();
-            this.source = source.getLegacyIdentifier();
+            var source = envelope.getSourceAddress();
+            this.source = getLegacyIdentifier(source);
             this.sourceDevice = envelope.getSourceDevice();
             this.relay = source.getRelay().orNull();
         } else if (envelope.isUnidentifiedSender() && content != null) {
-            this.source = content.getSender().getLegacyIdentifier();
+            this.source = getLegacyIdentifier(content.getSender());
             this.sourceDevice = content.getSenderDevice();
             this.relay = null;
         } else {
@@ -60,6 +66,13 @@ public class JsonMessageEnvelope {
             this.sourceDevice = null;
             this.relay = null;
         }
+        String name;
+        try {
+            name = m.getContactOrProfileName(this.source);
+        } catch (InvalidNumberException | NullPointerException e) {
+            name = null;
+        }
+        this.sourceName = name;
         this.timestamp = envelope.getTimestamp();
         if (envelope.isReceipt()) {
             this.receiptMessage = JsonReceiptMessage.deliveryReceipt(timestamp, List.of(timestamp));
@@ -85,6 +98,7 @@ public class JsonMessageEnvelope {
 
     public JsonMessageEnvelope(Signal.MessageReceived messageReceived) {
         source = messageReceived.getSender();
+        sourceName = null;
         sourceDevice = null;
         relay = null;
         timestamp = messageReceived.getTimestamp();
@@ -97,6 +111,7 @@ public class JsonMessageEnvelope {
 
     public JsonMessageEnvelope(Signal.ReceiptReceived receiptReceived) {
         source = receiptReceived.getSender();
+        sourceName = null;
         sourceDevice = null;
         relay = null;
         timestamp = receiptReceived.getTimestamp();
@@ -109,6 +124,7 @@ public class JsonMessageEnvelope {
 
     public JsonMessageEnvelope(Signal.SyncMessageReceived messageReceived) {
         source = messageReceived.getSource();
+        sourceName = null;
         sourceDevice = null;
         relay = null;
         timestamp = messageReceived.getTimestamp();