X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/46a4c2c0d0a36b7f230fc2c2d47aa371a6e02d35..3ad87e136231159f7439c7707605f3c4fe90d2f0:/src/main/java/org/asamk/signal/json/JsonSyncDataMessage.java diff --git a/src/main/java/org/asamk/signal/json/JsonSyncDataMessage.java b/src/main/java/org/asamk/signal/json/JsonSyncDataMessage.java index d93351f1..fc84b088 100644 --- a/src/main/java/org/asamk/signal/json/JsonSyncDataMessage.java +++ b/src/main/java/org/asamk/signal/json/JsonSyncDataMessage.java @@ -1,27 +1,31 @@ package org.asamk.signal.json; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonUnwrapped; -import org.asamk.Signal; -import org.asamk.signal.manager.Manager; -import org.whispersystems.signalservice.api.messages.multidevice.SentTranscriptMessage; -import org.whispersystems.signalservice.api.push.SignalServiceAddress; +import org.asamk.signal.manager.api.MessageEnvelope; -class JsonSyncDataMessage extends JsonDataMessage { +import java.util.UUID; - @JsonProperty - final String destination; +record JsonSyncDataMessage( + @Deprecated String destination, + String destinationNumber, + String destinationUuid, + @JsonUnwrapped JsonDataMessage dataMessage +) { - JsonSyncDataMessage(SentTranscriptMessage transcriptMessage, Manager m) { - super(transcriptMessage.getMessage(), m); + static JsonSyncDataMessage from(MessageEnvelope.Sync.Sent transcriptMessage) { + if (transcriptMessage.destination().isPresent()) { + final var address = transcriptMessage.destination().get(); + return new JsonSyncDataMessage(address.getLegacyIdentifier(), + address.number().orElse(null), + address.uuid().map(UUID::toString).orElse(null), + transcriptMessage.message().map(JsonDataMessage::from).orElse(null)); - this.destination = transcriptMessage.getDestination() - .transform(SignalServiceAddress::getLegacyIdentifier) - .orNull(); - } - - JsonSyncDataMessage(Signal.SyncMessageReceived messageReceived) { - super(messageReceived); - destination = messageReceived.getDestination(); + } else { + return new JsonSyncDataMessage(null, + null, + null, + transcriptMessage.message().map(JsonDataMessage::from).orElse(null)); + } } }