]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/api/MessageEnvelope.java
Implement editing of previous messages
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / api / MessageEnvelope.java
index c1726c1af61cef67834c4e4d0947f1fa01a328e1..a8f008754c3daa9c82afba9cb82f8af79c0b85b0 100644 (file)
@@ -9,6 +9,7 @@ import org.whispersystems.signalservice.api.messages.SignalServiceAttachment;
 import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentPointer;
 import org.whispersystems.signalservice.api.messages.SignalServiceContent;
 import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage;
+import org.whispersystems.signalservice.api.messages.SignalServiceEditMessage;
 import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope;
 import org.whispersystems.signalservice.api.messages.SignalServiceGroup;
 import org.whispersystems.signalservice.api.messages.SignalServiceGroupContext;
@@ -51,6 +52,7 @@ public record MessageEnvelope(
         Optional<Receipt> receipt,
         Optional<Typing> typing,
         Optional<Data> data,
+        Optional<Edit> edit,
         Optional<Sync> sync,
         Optional<Call> call,
         Optional<Story> story
@@ -541,6 +543,19 @@ public record MessageEnvelope(
         }
     }
 
+    public record Edit(long targetSentTimestamp, Data dataMessage) {
+
+        public static Edit from(
+                final SignalServiceEditMessage editMessage,
+                RecipientResolver recipientResolver,
+                RecipientAddressResolver addressResolver,
+                final AttachmentFileProvider fileProvider
+        ) {
+            return new Edit(editMessage.getTargetSentTimestamp(),
+                    Data.from(editMessage.getDataMessage(), recipientResolver, addressResolver, fileProvider));
+        }
+    }
+
     public record Sync(
             Optional<Sent> sent,
             Optional<Blocked> blocked,
@@ -582,6 +597,7 @@ public record MessageEnvelope(
                 Optional<RecipientAddress> destination,
                 Set<RecipientAddress> recipients,
                 Optional<Data> message,
+                Optional<Edit> editMessage,
                 Optional<Story> story
         ) {
 
@@ -603,6 +619,8 @@ public record MessageEnvelope(
                                 .collect(Collectors.toSet()),
                         sentMessage.getDataMessage()
                                 .map(message -> Data.from(message, recipientResolver, addressResolver, fileProvider)),
+                        sentMessage.getEditMessage()
+                                .map(message -> Edit.from(message, recipientResolver, addressResolver, fileProvider)),
                         sentMessage.getStoryMessage().map(s -> Story.from(s, fileProvider)));
             }
         }
@@ -920,6 +938,7 @@ public record MessageEnvelope(
         Optional<Receipt> receipt;
         Optional<Typing> typing;
         Optional<Data> data;
+        Optional<Edit> edit;
         Optional<Sync> sync;
         Optional<Call> call;
         Optional<Story> story;
@@ -928,6 +947,7 @@ public record MessageEnvelope(
             typing = content.getTypingMessage().map(Typing::from);
             data = content.getDataMessage()
                     .map(dataMessage -> Data.from(dataMessage, recipientResolver, addressResolver, fileProvider));
+            edit = content.getEditMessage().map(s -> Edit.from(s, recipientResolver, addressResolver, fileProvider));
             sync = content.getSyncMessage().map(s -> Sync.from(s, recipientResolver, addressResolver, fileProvider));
             call = content.getCallMessage().map(Call::from);
             story = content.getStoryMessage().map(s -> Story.from(s, fileProvider));
@@ -937,6 +957,7 @@ public record MessageEnvelope(
                     List.of(envelope.getTimestamp()))) : Optional.empty();
             typing = Optional.empty();
             data = Optional.empty();
+            edit = Optional.empty();
             sync = Optional.empty();
             call = Optional.empty();
             story = Optional.empty();
@@ -953,6 +974,7 @@ public record MessageEnvelope(
                 receipt,
                 typing,
                 data,
+                edit,
                 sync,
                 call,
                 story);