- this.typingMessage = content != null && content.getTypingMessage().isPresent()
- ? new JsonTypingMessage(content.getTypingMessage().get())
- : null;
-
- 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();
- sourceNumber = null;
- sourceUuid = null;
- sourceName = null;
- sourceDevice = null;
- timestamp = messageReceived.getTimestamp();
- receiptMessage = null;
- dataMessage = new JsonDataMessage(messageReceived);
- syncMessage = null;
- callMessage = null;
- typingMessage = null;
- }
-
- public JsonMessageEnvelope(Signal.ReceiptReceived receiptReceived) {
- source = receiptReceived.getSender();
- sourceNumber = null;
- sourceUuid = null;
- sourceName = null;
- sourceDevice = null;
- timestamp = receiptReceived.getTimestamp();
- receiptMessage = JsonReceiptMessage.deliveryReceipt(timestamp, List.of(timestamp));
- dataMessage = null;
- syncMessage = null;
- callMessage = null;
- typingMessage = null;
- }
-
- public JsonMessageEnvelope(Signal.SyncMessageReceived messageReceived) {
- source = messageReceived.getSource();
- sourceNumber = null;
- sourceUuid = null;
- sourceName = null;
- sourceDevice = null;
- timestamp = messageReceived.getTimestamp();
- receiptMessage = null;
- dataMessage = null;
- syncMessage = new JsonSyncMessage(messageReceived);
- callMessage = null;
- typingMessage = 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 = 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,
+ sourceUuid,
+ sourceName,
+ sourceDevice,
+ timestamp,
+ dataMessage,
+ syncMessage,
+ callMessage,
+ receiptMessage,
+ typingMessage);