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;
-
-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 = m.resolveSignalServiceAddress(reaction.getTargetAuthor()).getLegacyIdentifier();
- 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.number().orElse(null);
+ final var targetAuthorUuid = address.uuid().map(UUID::toString).orElse(null);
+ final var targetSentTimestamp = reaction.targetSentTimestamp();
+ final var isRemove = reaction.isRemove();
+ return new JsonReaction(emoji,
+ targetAuthor,
+ targetAuthorNumber,
+ targetAuthorUuid,
+ targetSentTimestamp,
+ isRemove);
}
}