X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/ce7aa580b6f0580cdcf7fd68fcc8efba737d21ed..91700ce995ae381dd97b246ea3ff11afb748e421:/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 f0d1831c..94f3f52c 100644 --- a/src/main/java/org/asamk/signal/json/JsonQuote.java +++ b/src/main/java/org/asamk/signal/json/JsonQuote.java @@ -2,14 +2,10 @@ package org.asamk.signal.json; import com.fasterxml.jackson.annotation.JsonInclude; -import org.asamk.signal.manager.Manager; -import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage; +import org.asamk.signal.manager.api.MessageEnvelope; -import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; - -import static org.asamk.signal.util.Util.getLegacyIdentifier; +import java.util.UUID; public record JsonQuote( long id, @@ -18,34 +14,32 @@ public record JsonQuote( String authorUuid, String text, @JsonInclude(JsonInclude.Include.NON_NULL) List mentions, - List attachments + List attachments, + @JsonInclude(JsonInclude.Include.NON_NULL) List textStyles ) { - static JsonQuote from(SignalServiceDataMessage.Quote quote, Manager m) { - final var id = quote.getId(); - final var address = m.resolveSignalServiceAddress(quote.getAuthor()); - 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) { - mentions = quote.getMentions() - .stream() - .map(quotedMention -> JsonMention.from(quotedMention, m)) - .collect(Collectors.toList()); - } else { - mentions = null; - } - - final List attachments; - if (quote.getAttachments().size() > 0) { - attachments = quote.getAttachments().stream().map(JsonQuotedAttachment::from).collect(Collectors.toList()); - } else { - attachments = new ArrayList<>(); - } - - return new JsonQuote(id, author, authorNumber, authorUuid, text, mentions, 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.number().orElse(null); + final var authorUuid = address.uuid().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).toList() + : null; + + final var attachments = quote.attachments().size() > 0 ? quote.attachments() + .stream() + .map(JsonQuotedAttachment::from) + .toList() : List.of(); + + final var textStyles = quote.textStyles().size() > 0 ? quote.textStyles() + .stream() + .map(JsonTextStyle::from) + .toList() : null; + + return new JsonQuote(id, author, authorNumber, authorUuid, text, mentions, attachments, textStyles); } }