X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/58db3cbd53f3faec94ddfcd5e029865a380e6242..fa5c09d23b830f2999a52421c189a3e4661da99f:/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 9a740582..05dc8f41 100644 --- a/src/main/java/org/asamk/signal/json/JsonQuote.java +++ b/src/main/java/org/asamk/signal/json/JsonQuote.java @@ -1,42 +1,42 @@ package org.asamk.signal.json; -import org.asamk.signal.manager.Manager; -import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage; +import com.fasterxml.jackson.annotation.JsonInclude; + +import org.asamk.signal.manager.api.MessageEnvelope; import java.util.ArrayList; import java.util.List; - -public class JsonQuote { - - long id; - String author; - String text; - - List mentions; - List attachments; - - JsonQuote(SignalServiceDataMessage.Quote quote, Manager m) { - this.id = quote.getId(); - this.author = m.resolveSignalServiceAddress(quote.getAuthor()).getLegacyIdentifier(); - this.text = quote.getText(); - - if (quote.getMentions().size() > 0) { - this.mentions = new ArrayList<>(quote.getMentions().size()); - - for (SignalServiceDataMessage.Mention quotedMention: quote.getMentions()){ - this.mentions.add(new JsonMention(quotedMention, m)); - } - } - - if (quote.getAttachments().size() > 0) { - this.attachments = new ArrayList<>(quote.getAttachments().size()); - - for (SignalServiceDataMessage.Quote.QuotedAttachment quotedAttachment : quote.getAttachments()) { - this.attachments.add(new JsonQuotedAttachment(quotedAttachment)); - } - } else { - this.attachments = new ArrayList<>(); - } +import java.util.UUID; +import java.util.stream.Collectors; + +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(MessageEnvelope.Data.Quote quote) { + final var id = quote.id(); + final var address = quote.author(); + final var author = address.getLegacyIdentifier(); + final var authorNumber = address.getNumber().orElse(null); + final var authorUuid = address.getUuid().map(UUID::toString).orElse(null); + final var text = quote.text().orElse(null); + + final var mentions = quote.mentions().size() > 0 ? quote.mentions() + .stream() + .map(JsonMention::from) + .collect(Collectors.toList()) : null; + + final var attachments = quote.attachments().size() > 0 ? quote.attachments() + .stream() + .map(JsonQuotedAttachment::from) + .collect(Collectors.toList()) : new ArrayList(); + + return new JsonQuote(id, author, authorNumber, authorUuid, text, mentions, attachments); } - }