- String source;
- int sourceDevice;
- String relay;
- long timestamp;
- JsonDataMessage dataMessage;
- JsonSyncMessage syncMessage;
- JsonCallMessage callMessage;
- JsonReceiptMessage receiptMessage;
-
- public JsonMessageEnvelope(SignalServiceEnvelope envelope, SignalServiceContent content, Manager m) {
- if (!envelope.isUnidentifiedSender() && envelope.hasSource()) {
- SignalServiceAddress source = envelope.getSourceAddress();
- this.source = source.getLegacyIdentifier();
- this.relay = source.getRelay().isPresent() ? source.getRelay().get() : null;
+ @JsonProperty
+ @Deprecated
+ final String source;
+
+ @JsonProperty
+ final String sourceNumber;
+
+ @JsonProperty
+ final String sourceUuid;
+
+ @JsonProperty
+ final String sourceName;
+
+ @JsonProperty
+ final Integer sourceDevice;
+
+ @JsonProperty
+ final long timestamp;
+
+ @JsonProperty
+ @JsonInclude(JsonInclude.Include.NON_NULL)
+ final JsonDataMessage dataMessage;
+
+ @JsonProperty
+ @JsonInclude(JsonInclude.Include.NON_NULL)
+ final JsonSyncMessage syncMessage;
+
+ @JsonProperty
+ @JsonInclude(JsonInclude.Include.NON_NULL)
+ final JsonCallMessage callMessage;
+
+ @JsonProperty
+ @JsonInclude(JsonInclude.Include.NON_NULL)
+ final JsonReceiptMessage receiptMessage;
+
+ @JsonProperty
+ @JsonInclude(JsonInclude.Include.NON_NULL)
+ final JsonTypingMessage typingMessage;
+
+ public JsonMessageEnvelope(
+ SignalServiceEnvelope envelope, SignalServiceContent content, Throwable exception, Manager m
+ ) {
+ if (!envelope.isUnidentifiedSender() && envelope.hasSourceUuid()) {
+ var source = m.resolveSignalServiceAddress(envelope.getSourceAddress());
+ this.source = getLegacyIdentifier(source);
+ this.sourceNumber = source.getNumber().orNull();
+ this.sourceUuid = source.getUuid().toString();
+ this.sourceDevice = envelope.getSourceDevice();
+ } else if (envelope.isUnidentifiedSender() && content != null) {
+ final var source = m.resolveSignalServiceAddress(content.getSender());
+ this.source = getLegacyIdentifier(source);
+ this.sourceNumber = source.getNumber().orNull();
+ this.sourceUuid = source.getUuid().toString();
+ this.sourceDevice = content.getSenderDevice();
+ } else if (exception instanceof UntrustedIdentityException) {
+ var e = (UntrustedIdentityException) exception;
+ final var source = m.resolveSignalServiceAddress(e.getSender());
+ this.source = getLegacyIdentifier(source);
+ this.sourceNumber = source.getNumber().orNull();
+ this.sourceUuid = source.getUuid().toString();
+ this.sourceDevice = e.getSenderDevice();
+ } else {
+ this.source = null;
+ this.sourceNumber = null;
+ this.sourceUuid = null;
+ this.sourceDevice = null;
+ }
+ String name;
+ try {
+ name = m.getContactOrProfileName(RecipientIdentifier.Single.fromString(this.source, m.getSelfNumber()));
+ } catch (InvalidNumberException | NullPointerException e) {
+ name = null;