X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/5bbfd3259891e18a11cb878e14a9c17990b13d79..3533500b736ce382b9cc1d53d29ff267324bf4be:/src/main/java/org/asamk/signal/json/JsonReaction.java diff --git a/src/main/java/org/asamk/signal/json/JsonReaction.java b/src/main/java/org/asamk/signal/json/JsonReaction.java index ecea15fe..71da4df5 100644 --- a/src/main/java/org/asamk/signal/json/JsonReaction.java +++ b/src/main/java/org/asamk/signal/json/JsonReaction.java @@ -1,42 +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 org.asamk.signal.manager.api.MessageEnvelope; import java.util.UUID; -import static org.asamk.signal.util.Util.getLegacyIdentifier; - -public class JsonReaction { - - @JsonProperty - final String emoji; - - @JsonProperty - @Deprecated - final String targetAuthor; - - @JsonProperty - final String targetAuthorNumber; - - @JsonProperty - final String targetAuthorUuid; - - @JsonProperty - final long targetSentTimestamp; - - @JsonProperty - final boolean isRemove; - - JsonReaction(Reaction reaction, Manager m) { - this.emoji = reaction.getEmoji(); - final var address = m.resolveSignalServiceAddress(reaction.getTargetAuthor()); - this.targetAuthor = getLegacyIdentifier(address); - this.targetAuthorNumber = address.getNumber().orNull(); - this.targetAuthorUuid = address.getUuid().transform(UUID::toString).orNull(); - this.targetSentTimestamp = reaction.getTargetSentTimestamp(); - this.isRemove = reaction.isRemove(); +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); } }