X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/9075cc1a309fbc90276d2878d480d1e9e9c81887..a593051512b716ed3cc42a1a7b69d49a459352ed:/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 04340d0f..adc7a251 100644 --- a/src/main/java/org/asamk/signal/json/JsonMessageEnvelope.java +++ b/src/main/java/org/asamk/signal/json/JsonMessageEnvelope.java @@ -2,14 +2,12 @@ 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.MessageEnvelope; import org.asamk.signal.manager.api.RecipientIdentifier; -import org.whispersystems.signalservice.api.util.InvalidNumberException; +import org.asamk.signal.manager.api.UntrustedIdentityException; +import org.asamk.signal.manager.storage.recipients.RecipientAddress; -import java.util.List; import java.util.UUID; public record JsonMessageEnvelope( @@ -20,6 +18,7 @@ public record JsonMessageEnvelope( Integer sourceDevice, long timestamp, @JsonInclude(JsonInclude.Include.NON_NULL) JsonDataMessage dataMessage, + @JsonInclude(JsonInclude.Include.NON_NULL) JsonStoryMessage storyMessage, @JsonInclude(JsonInclude.Include.NON_NULL) JsonSyncMessage syncMessage, @JsonInclude(JsonInclude.Include.NON_NULL) JsonCallMessage callMessage, @JsonInclude(JsonInclude.Include.NON_NULL) JsonReceiptMessage receiptMessage, @@ -29,40 +28,40 @@ public record JsonMessageEnvelope( public static JsonMessageEnvelope from( MessageEnvelope envelope, Throwable exception, Manager m ) { - final String source; - final String sourceNumber; - final String sourceUuid; + final RecipientAddress sourceAddress; final Integer sourceDevice; 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); + sourceAddress = envelope.sourceAddress().get(); sourceDevice = envelope.sourceDevice(); } else if (exception instanceof UntrustedIdentityException e) { - final var sender = e.getSender(); - source = sender.getLegacyIdentifier(); - sourceNumber = sender.getNumber().orElse(null); - sourceUuid = sender.getUuid().map(UUID::toString).orElse(null); + sourceAddress = e.getSender(); sourceDevice = e.getSenderDevice(); + } else { + sourceAddress = null; + sourceDevice = null; + } + + final String source; + final String sourceNumber; + final String sourceUuid; + final String sourceName; + if (sourceAddress != null) { + source = sourceAddress.getLegacyIdentifier(); + sourceNumber = sourceAddress.number().orElse(null); + sourceUuid = sourceAddress.uuid().map(UUID::toString).orElse(null); + sourceName = m.getContactOrProfileName(RecipientIdentifier.Single.fromAddress(sourceAddress)); } else { source = null; sourceNumber = null; sourceUuid = null; - sourceDevice = null; + sourceName = null; } - String name; - try { - name = m.getContactOrProfileName(RecipientIdentifier.Single.fromString(source, m.getSelfNumber())); - } catch (InvalidNumberException | NullPointerException e) { - name = null; - } - final var sourceName = name; 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 = envelope.data().map(JsonDataMessage::from).orElse(null); + final var storyMessage = envelope.story().map(JsonStoryMessage::from).orElse(null); final var syncMessage = envelope.sync().map(JsonSyncMessage::from).orElse(null); final var callMessage = envelope.call().map(JsonCallMessage::from).orElse(null); @@ -73,52 +72,10 @@ public record JsonMessageEnvelope( sourceDevice, timestamp, dataMessage, + storyMessage, syncMessage, callMessage, 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); - } }