X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/ce7aa580b6f0580cdcf7fd68fcc8efba737d21ed..32818a8608f5bddc46ad5c7dc442f509c939791c:/src/main/java/org/asamk/signal/json/JsonMessageEnvelope.java diff --git a/src/main/java/org/asamk/signal/json/JsonMessageEnvelope.java b/src/main/java/org/asamk/signal/json/JsonMessageEnvelope.java index f5d70d28..b7e1cf2a 100644 --- a/src/main/java/org/asamk/signal/json/JsonMessageEnvelope.java +++ b/src/main/java/org/asamk/signal/json/JsonMessageEnvelope.java @@ -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); - } }