]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/json/JsonSyncDataMessage.java
Update libsignal-service-java
[signal-cli] / src / main / java / org / asamk / signal / json / JsonSyncDataMessage.java
index 7ea75bbdbdd4d5e60d31e6377e26db5411dc264b..fe427ef132afa7bebf90bf997a3bab8508ce7b0b 100644 (file)
@@ -1,22 +1,28 @@
 package org.asamk.signal.json;
 
-import org.asamk.Signal;
-import org.asamk.signal.manager.Manager;
-import org.whispersystems.signalservice.api.messages.multidevice.SentTranscriptMessage;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonUnwrapped;
 
-class JsonSyncDataMessage extends JsonDataMessage {
+import org.asamk.signal.manager.api.MessageEnvelope;
+import org.asamk.signal.manager.api.RecipientAddress;
 
-    String destination;
+import java.util.UUID;
 
-    JsonSyncDataMessage(SentTranscriptMessage transcriptMessage, Manager m) {
-        super(transcriptMessage.getMessage(), m);
-        if (transcriptMessage.getDestination().isPresent()) {
-            this.destination = transcriptMessage.getDestination().get().getLegacyIdentifier();
-        }
-    }
+record JsonSyncDataMessage(
+        @Deprecated String destination,
+        String destinationNumber,
+        String destinationUuid,
+        @JsonInclude(JsonInclude.Include.NON_NULL) JsonEditMessage editMessage,
+        @JsonUnwrapped JsonDataMessage dataMessage
+) {
 
-    JsonSyncDataMessage(Signal.SyncMessageReceived messageReceived) {
-        super(messageReceived);
-        destination = messageReceived.getDestination();
+    static JsonSyncDataMessage from(MessageEnvelope.Sync.Sent transcriptMessage) {
+        return new JsonSyncDataMessage(transcriptMessage.destination()
+                .map(RecipientAddress::getLegacyIdentifier)
+                .orElse(null),
+                transcriptMessage.destination().flatMap(RecipientAddress::number).orElse(null),
+                transcriptMessage.destination().flatMap(address -> address.uuid().map(UUID::toString)).orElse(null),
+                transcriptMessage.editMessage().map(JsonEditMessage::from).orElse(null),
+                transcriptMessage.message().map(JsonDataMessage::from).orElse(null));
     }
 }