mirror of
https://github.com/aljazceru/signal-cli.git
synced 2026-01-20 06:04:22 +01:00
Make fields in json classes final and omit unnecessary nulls when serializing
Fix sender in sync read messages
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
package org.asamk.signal.json;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
import org.asamk.Signal;
|
||||
import org.asamk.signal.manager.Manager;
|
||||
import org.whispersystems.signalservice.api.messages.SignalServiceContent;
|
||||
@@ -10,61 +13,99 @@ import java.util.List;
|
||||
|
||||
public class JsonMessageEnvelope {
|
||||
|
||||
String source;
|
||||
int sourceDevice;
|
||||
String relay;
|
||||
long timestamp;
|
||||
JsonDataMessage dataMessage;
|
||||
JsonSyncMessage syncMessage;
|
||||
JsonCallMessage callMessage;
|
||||
JsonReceiptMessage receiptMessage;
|
||||
@JsonProperty
|
||||
final String source;
|
||||
|
||||
@JsonProperty
|
||||
final Integer sourceDevice;
|
||||
|
||||
@JsonProperty
|
||||
final String relay;
|
||||
|
||||
@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;
|
||||
|
||||
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;
|
||||
this.sourceDevice = envelope.getSourceDevice();
|
||||
this.relay = source.getRelay().orNull();
|
||||
} else if (envelope.isUnidentifiedSender() && content != null) {
|
||||
this.source = content.getSender().getLegacyIdentifier();
|
||||
this.sourceDevice = content.getSenderDevice();
|
||||
this.relay = null;
|
||||
} else {
|
||||
this.source = null;
|
||||
this.sourceDevice = null;
|
||||
this.relay = null;
|
||||
}
|
||||
this.sourceDevice = envelope.getSourceDevice();
|
||||
this.timestamp = envelope.getTimestamp();
|
||||
if (envelope.isReceipt()) {
|
||||
this.receiptMessage = JsonReceiptMessage.deliveryReceipt(timestamp, List.of(timestamp));
|
||||
} else if (content != null && content.getReceiptMessage().isPresent()) {
|
||||
this.receiptMessage = new JsonReceiptMessage(content.getReceiptMessage().get());
|
||||
} else {
|
||||
this.receiptMessage = null;
|
||||
}
|
||||
if (content != null) {
|
||||
if (envelope.isUnidentifiedSender()) {
|
||||
this.source = content.getSender().getLegacyIdentifier();
|
||||
this.sourceDevice = content.getSenderDevice();
|
||||
}
|
||||
if (content.getDataMessage().isPresent()) {
|
||||
this.dataMessage = new JsonDataMessage(content.getDataMessage().get(), m);
|
||||
}
|
||||
if (content.getSyncMessage().isPresent()) {
|
||||
this.syncMessage = new JsonSyncMessage(content.getSyncMessage().get(), m);
|
||||
}
|
||||
if (content.getCallMessage().isPresent()) {
|
||||
this.callMessage = new JsonCallMessage(content.getCallMessage().get());
|
||||
}
|
||||
if (content.getReceiptMessage().isPresent()) {
|
||||
this.receiptMessage = new JsonReceiptMessage(content.getReceiptMessage().get());
|
||||
}
|
||||
}
|
||||
|
||||
this.dataMessage = content != null && content.getDataMessage().isPresent()
|
||||
? new JsonDataMessage(content.getDataMessage().get(), m)
|
||||
: null;
|
||||
this.syncMessage = content != null && content.getSyncMessage().isPresent()
|
||||
? new JsonSyncMessage(content.getSyncMessage().get(), m)
|
||||
: null;
|
||||
this.callMessage = content != null && content.getCallMessage().isPresent()
|
||||
? new JsonCallMessage(content.getCallMessage().get())
|
||||
: null;
|
||||
}
|
||||
|
||||
public JsonMessageEnvelope(Signal.MessageReceived messageReceived) {
|
||||
source = messageReceived.getSender();
|
||||
sourceDevice = null;
|
||||
relay = null;
|
||||
timestamp = messageReceived.getTimestamp();
|
||||
receiptMessage = null;
|
||||
dataMessage = new JsonDataMessage(messageReceived);
|
||||
syncMessage = null;
|
||||
callMessage = null;
|
||||
}
|
||||
|
||||
public JsonMessageEnvelope(Signal.ReceiptReceived receiptReceived) {
|
||||
source = receiptReceived.getSender();
|
||||
sourceDevice = null;
|
||||
relay = null;
|
||||
timestamp = receiptReceived.getTimestamp();
|
||||
receiptMessage = JsonReceiptMessage.deliveryReceipt(timestamp, List.of(timestamp));
|
||||
dataMessage = null;
|
||||
syncMessage = null;
|
||||
callMessage = null;
|
||||
}
|
||||
|
||||
public JsonMessageEnvelope(Signal.SyncMessageReceived messageReceived) {
|
||||
source = messageReceived.getSource();
|
||||
sourceDevice = null;
|
||||
relay = null;
|
||||
timestamp = messageReceived.getTimestamp();
|
||||
receiptMessage = null;
|
||||
dataMessage = null;
|
||||
syncMessage = new JsonSyncMessage(messageReceived);
|
||||
callMessage = null;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user