import org.asamk.signal.manager.Manager;
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 java.util.UUID;
+
+import static org.asamk.signal.util.Util.getLegacyIdentifier;
public class JsonMessageEnvelope {
@JsonProperty
+ @Deprecated
final String source;
+ @JsonProperty
+ final String sourceNumber;
+
+ @JsonProperty
+ final String sourceUuid;
+
+ @JsonProperty
+ final String sourceName;
+
@JsonProperty
final Integer sourceDevice;
public JsonMessageEnvelope(SignalServiceEnvelope envelope, SignalServiceContent content, Manager m) {
if (!envelope.isUnidentifiedSender() && envelope.hasSource()) {
var source = envelope.getSourceAddress();
- this.source = source.getLegacyIdentifier();
+ this.source = getLegacyIdentifier(source);
+ this.sourceNumber = source.getNumber().orNull();
+ this.sourceUuid = source.getUuid().transform(UUID::toString).orNull();
this.sourceDevice = envelope.getSourceDevice();
this.relay = source.getRelay().orNull();
} else if (envelope.isUnidentifiedSender() && content != null) {
- this.source = content.getSender().getLegacyIdentifier();
+ final var source = content.getSender();
+ this.source = getLegacyIdentifier(source);
+ this.sourceNumber = source.getNumber().orNull();
+ this.sourceUuid = source.getUuid().transform(UUID::toString).orNull();
this.sourceDevice = content.getSenderDevice();
this.relay = null;
} else {
this.source = null;
+ this.sourceNumber = null;
+ this.sourceUuid = null;
this.sourceDevice = null;
this.relay = null;
}
+ String name;
+ try {
+ name = m.getContactOrProfileName(this.source);
+ } catch (InvalidNumberException | NullPointerException e) {
+ name = null;
+ }
+ this.sourceName = name;
this.timestamp = envelope.getTimestamp();
if (envelope.isReceipt()) {
this.receiptMessage = JsonReceiptMessage.deliveryReceipt(timestamp, List.of(timestamp));
public JsonMessageEnvelope(Signal.MessageReceived messageReceived) {
source = messageReceived.getSender();
+ sourceNumber = null;
+ sourceUuid = null;
+ sourceName = null;
sourceDevice = null;
relay = null;
timestamp = messageReceived.getTimestamp();
public JsonMessageEnvelope(Signal.ReceiptReceived receiptReceived) {
source = receiptReceived.getSender();
+ sourceNumber = null;
+ sourceUuid = null;
+ sourceName = null;
sourceDevice = null;
relay = null;
timestamp = receiptReceived.getTimestamp();
public JsonMessageEnvelope(Signal.SyncMessageReceived messageReceived) {
source = messageReceived.getSource();
+ sourceNumber = null;
+ sourceUuid = null;
+ sourceName = null;
sourceDevice = null;
relay = null;
timestamp = messageReceived.getTimestamp();