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));
+ }
}
}