]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/json/JsonMessageEnvelope.java
Refactor ReceiveCommand in dbus mode and remove ExtendedDbusCommand
[signal-cli] / src / main / java / org / asamk / signal / json / JsonMessageEnvelope.java
index f5d70d28a61d7bb2bdc62ae3993343651490b3d3..b7e1cf2ac600147b74627c2834d3d455fce4f9e1 100644 (file)
@@ -2,17 +2,13 @@ package org.asamk.signal.json;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
 
-import org.asamk.Signal;
 import org.asamk.signal.manager.Manager;
 import org.asamk.signal.manager.UntrustedIdentityException;
+import org.asamk.signal.manager.api.InvalidNumberException;
+import org.asamk.signal.manager.api.MessageEnvelope;
 import org.asamk.signal.manager.api.RecipientIdentifier;
-import org.whispersystems.signalservice.api.messages.SignalServiceContent;
-import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope;
-import org.whispersystems.signalservice.api.util.InvalidNumberException;
 
-import java.util.List;
-
-import static org.asamk.signal.util.Util.getLegacyIdentifier;
+import java.util.UUID;
 
 public record JsonMessageEnvelope(
         @Deprecated String source,
@@ -29,29 +25,23 @@ public record JsonMessageEnvelope(
 ) {
 
     public static JsonMessageEnvelope from(
-            SignalServiceEnvelope envelope, SignalServiceContent content, Throwable exception, Manager m
+            MessageEnvelope envelope, Throwable exception, Manager m
     ) {
         final String source;
         final String sourceNumber;
         final String sourceUuid;
         final Integer sourceDevice;
-        if (!envelope.isUnidentifiedSender() && envelope.hasSourceUuid()) {
-            final var sourceAddress = m.resolveSignalServiceAddress(envelope.getSourceAddress());
-            source = getLegacyIdentifier(sourceAddress);
-            sourceNumber = sourceAddress.getNumber().orNull();
-            sourceUuid = sourceAddress.getUuid().toString();
-            sourceDevice = envelope.getSourceDevice();
-        } else if (envelope.isUnidentifiedSender() && content != null) {
-            final var sender = m.resolveSignalServiceAddress(content.getSender());
-            source = getLegacyIdentifier(sender);
-            sourceNumber = sender.getNumber().orNull();
-            sourceUuid = sender.getUuid().toString();
-            sourceDevice = content.getSenderDevice();
+        if (envelope.sourceAddress().isPresent()) {
+            final var sourceAddress = envelope.sourceAddress().get();
+            source = sourceAddress.getLegacyIdentifier();
+            sourceNumber = sourceAddress.getNumber().orElse(null);
+            sourceUuid = sourceAddress.getUuid().map(UUID::toString).orElse(null);
+            sourceDevice = envelope.sourceDevice();
         } else if (exception instanceof UntrustedIdentityException e) {
-            final var sender = m.resolveSignalServiceAddress(e.getSender());
-            source = getLegacyIdentifier(sender);
-            sourceNumber = sender.getNumber().orNull();
-            sourceUuid = sender.getUuid().toString();
+            final var sender = e.getSender();
+            source = sender.getLegacyIdentifier();
+            sourceNumber = sender.getNumber().orElse(null);
+            sourceUuid = sender.getUuid().map(UUID::toString).orElse(null);
             sourceDevice = e.getSenderDevice();
         } else {
             source = null;
@@ -66,27 +56,13 @@ public record JsonMessageEnvelope(
             name = null;
         }
         final var sourceName = name;
-        final var timestamp = envelope.getTimestamp();
-        final JsonReceiptMessage receiptMessage;
-        if (envelope.isReceipt()) {
-            receiptMessage = JsonReceiptMessage.deliveryReceipt(timestamp, List.of(timestamp));
-        } else if (content != null && content.getReceiptMessage().isPresent()) {
-            receiptMessage = JsonReceiptMessage.from(content.getReceiptMessage().get());
-        } else {
-            receiptMessage = null;
-        }
-        final var typingMessage = content != null && content.getTypingMessage().isPresent() ? JsonTypingMessage.from(
-                content.getTypingMessage().get()) : null;
+        final var timestamp = envelope.timestamp();
+        final var receiptMessage = envelope.receipt().map(JsonReceiptMessage::from).orElse(null);
+        final var typingMessage = envelope.typing().map(JsonTypingMessage::from).orElse(null);
 
-        final var dataMessage = content != null && content.getDataMessage().isPresent()
-                ? JsonDataMessage.from(content.getDataMessage().get(), m)
-                : null;
-        final var syncMessage = content != null && content.getSyncMessage().isPresent()
-                ? JsonSyncMessage.from(content.getSyncMessage().get(), m)
-                : null;
-        final var callMessage = content != null && content.getCallMessage().isPresent()
-                ? JsonCallMessage.from(content.getCallMessage().get())
-                : null;
+        final var dataMessage = envelope.data().map(JsonDataMessage::from).orElse(null);
+        final var syncMessage = envelope.sync().map(JsonSyncMessage::from).orElse(null);
+        final var callMessage = envelope.call().map(JsonCallMessage::from).orElse(null);
 
         return new JsonMessageEnvelope(source,
                 sourceNumber,
@@ -100,47 +76,4 @@ public record JsonMessageEnvelope(
                 receiptMessage,
                 typingMessage);
     }
-
-    public static JsonMessageEnvelope from(Signal.MessageReceived messageReceived) {
-        return new JsonMessageEnvelope(messageReceived.getSource(),
-                null,
-                null,
-                null,
-                null,
-                messageReceived.getTimestamp(),
-                JsonDataMessage.from(messageReceived),
-                null,
-                null,
-                null,
-                null);
-    }
-
-    public static JsonMessageEnvelope from(Signal.ReceiptReceived receiptReceived) {
-        return new JsonMessageEnvelope(receiptReceived.getSender(),
-                null,
-                null,
-                null,
-                null,
-                receiptReceived.getTimestamp(),
-                null,
-                null,
-                null,
-                JsonReceiptMessage.deliveryReceipt(receiptReceived.getTimestamp(),
-                        List.of(receiptReceived.getTimestamp())),
-                null);
-    }
-
-    public static JsonMessageEnvelope from(Signal.SyncMessageReceived messageReceived) {
-        return new JsonMessageEnvelope(messageReceived.getSource(),
-                null,
-                null,
-                null,
-                null,
-                messageReceived.getTimestamp(),
-                null,
-                JsonSyncMessage.from(messageReceived),
-                null,
-                null,
-                null);
-    }
 }