]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/json/JsonMessageEnvelope.java
Quotes, Mentions and Reactions in non-daemon JSON mode (#389)
[signal-cli] / src / main / java / org / asamk / signal / json / JsonMessageEnvelope.java
index b42699495668899af4a2ad9837c917e6c54bef7b..787f62e201172a5b9fc6208fc094110cafcc3231 100644 (file)
@@ -1,23 +1,25 @@
 package org.asamk.signal.json;
 
 import org.asamk.Signal;
+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.push.SignalServiceAddress;
 
+import java.util.List;
+
 public class JsonMessageEnvelope {
 
     String source;
     int sourceDevice;
     String relay;
     long timestamp;
-    boolean isReceipt;
     JsonDataMessage dataMessage;
     JsonSyncMessage syncMessage;
     JsonCallMessage callMessage;
     JsonReceiptMessage receiptMessage;
 
-    public JsonMessageEnvelope(SignalServiceEnvelope envelope, SignalServiceContent content) {
+    public JsonMessageEnvelope(SignalServiceEnvelope envelope, SignalServiceContent content, Manager m) {
         if (!envelope.isUnidentifiedSender() && envelope.hasSource()) {
             SignalServiceAddress source = envelope.getSourceAddress();
             this.source = source.getLegacyIdentifier();
@@ -25,17 +27,19 @@ public class JsonMessageEnvelope {
         }
         this.sourceDevice = envelope.getSourceDevice();
         this.timestamp = envelope.getTimestamp();
-        this.isReceipt = envelope.isReceipt();
+        if (envelope.isReceipt()) {
+            this.receiptMessage = JsonReceiptMessage.deliveryReceipt(timestamp, List.of(timestamp));
+        }
         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());
+                this.dataMessage = new JsonDataMessage(content.getDataMessage().get(), m);
             }
             if (content.getSyncMessage().isPresent()) {
-                this.syncMessage = new JsonSyncMessage(content.getSyncMessage().get());
+                this.syncMessage = new JsonSyncMessage(content.getSyncMessage().get(), m);
             }
             if (content.getCallMessage().isPresent()) {
                 this.callMessage = new JsonCallMessage(content.getCallMessage().get());
@@ -55,7 +59,7 @@ public class JsonMessageEnvelope {
     public JsonMessageEnvelope(Signal.ReceiptReceived receiptReceived) {
         source = receiptReceived.getSender();
         timestamp = receiptReceived.getTimestamp();
-        isReceipt = true;
+        receiptMessage = JsonReceiptMessage.deliveryReceipt(timestamp, List.of(timestamp));
     }
 
     public JsonMessageEnvelope(Signal.SyncMessageReceived messageReceived) {