]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/json/JsonReaction.java
Implement sending message quotes
[signal-cli] / src / main / java / org / asamk / signal / json / JsonReaction.java
index e7d40fbeb9308d3bcfd55577453338e009bcbf70..04037b6edd1a8acee8ae6c30dbbf3f5b8b6bdc7a 100644 (file)
@@ -1,30 +1,31 @@
 package org.asamk.signal.json;
 
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-import org.asamk.signal.manager.Manager;
-import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage.Reaction;
-
-import static org.asamk.signal.util.Util.getLegacyIdentifier;
-
-public class JsonReaction {
-
-    @JsonProperty
-    final String emoji;
-
-    @JsonProperty
-    final String targetAuthor;
-
-    @JsonProperty
-    final long targetSentTimestamp;
-
-    @JsonProperty
-    final boolean isRemove;
-
-    JsonReaction(Reaction reaction, Manager m) {
-        this.emoji = reaction.getEmoji();
-        this.targetAuthor = getLegacyIdentifier(m.resolveSignalServiceAddress(reaction.getTargetAuthor()));
-        this.targetSentTimestamp = reaction.getTargetSentTimestamp();
-        this.isRemove = reaction.isRemove();
+import org.asamk.signal.manager.api.MessageEnvelope;
+
+import java.util.UUID;
+
+public record JsonReaction(
+        String emoji,
+        @Deprecated String targetAuthor,
+        String targetAuthorNumber,
+        String targetAuthorUuid,
+        long targetSentTimestamp,
+        boolean isRemove
+) {
+
+    static JsonReaction from(MessageEnvelope.Data.Reaction reaction) {
+        final var emoji = reaction.emoji();
+        final var address = reaction.targetAuthor();
+        final var targetAuthor = address.getLegacyIdentifier();
+        final var targetAuthorNumber = address.getNumber().orElse(null);
+        final var targetAuthorUuid = address.getUuid().map(UUID::toString).orElse(null);
+        final var targetSentTimestamp = reaction.targetSentTimestamp();
+        final var isRemove = reaction.isRemove();
+        return new JsonReaction(emoji,
+                targetAuthor,
+                targetAuthorNumber,
+                targetAuthorUuid,
+                targetSentTimestamp,
+                isRemove);
     }
 }