X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/5bbfd3259891e18a11cb878e14a9c17990b13d79..f39983f78acf438049cd709c17ddb3e9ccefedef:/src/main/java/org/asamk/signal/json/JsonQuote.java diff --git a/src/main/java/org/asamk/signal/json/JsonQuote.java b/src/main/java/org/asamk/signal/json/JsonQuote.java index ecd31c1a..f0d1831c 100644 --- a/src/main/java/org/asamk/signal/json/JsonQuote.java +++ b/src/main/java/org/asamk/signal/json/JsonQuote.java @@ -1,67 +1,51 @@ package org.asamk.signal.json; import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; import org.asamk.signal.manager.Manager; import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage; import java.util.ArrayList; import java.util.List; -import java.util.UUID; import java.util.stream.Collectors; import static org.asamk.signal.util.Util.getLegacyIdentifier; -public class JsonQuote { - - @JsonProperty - final long id; - - @JsonProperty - @Deprecated - final String author; - - @JsonProperty - final String authorNumber; - - @JsonProperty - final String authorUuid; - - @JsonProperty - final String text; - - @JsonProperty - @JsonInclude(JsonInclude.Include.NON_NULL) - final List mentions; - - @JsonProperty - final List attachments; - - JsonQuote(SignalServiceDataMessage.Quote quote, Manager m) { - this.id = quote.getId(); +public record JsonQuote( + long id, + @Deprecated String author, + String authorNumber, + String authorUuid, + String text, + @JsonInclude(JsonInclude.Include.NON_NULL) List mentions, + List attachments +) { + + static JsonQuote from(SignalServiceDataMessage.Quote quote, Manager m) { + final var id = quote.getId(); final var address = m.resolveSignalServiceAddress(quote.getAuthor()); - this.author = getLegacyIdentifier(address); - this.authorNumber = address.getNumber().orNull(); - this.authorUuid = address.getUuid().transform(UUID::toString).orNull(); - this.text = quote.getText(); + final var author = getLegacyIdentifier(address); + final var authorNumber = address.getNumber().orNull(); + final var authorUuid = address.getUuid().toString(); + final var text = quote.getText(); + final List mentions; if (quote.getMentions() != null && quote.getMentions().size() > 0) { - this.mentions = quote.getMentions() + mentions = quote.getMentions() .stream() - .map(quotedMention -> new JsonMention(quotedMention, m)) + .map(quotedMention -> JsonMention.from(quotedMention, m)) .collect(Collectors.toList()); } else { - this.mentions = null; + mentions = null; } + final List attachments; if (quote.getAttachments().size() > 0) { - this.attachments = quote.getAttachments() - .stream() - .map(JsonQuotedAttachment::new) - .collect(Collectors.toList()); + attachments = quote.getAttachments().stream().map(JsonQuotedAttachment::from).collect(Collectors.toList()); } else { - this.attachments = new ArrayList<>(); + attachments = new ArrayList<>(); } + + return new JsonQuote(id, author, authorNumber, authorUuid, text, mentions, attachments); } }