]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/json/JsonQuote.java
Improve addDevice error message
[signal-cli] / src / main / java / org / asamk / signal / json / JsonQuote.java
index f0d1831c5b9a7e0a6a78573e39356f5fc2ed32c1..514f3db9ee106fb7b5210c575eca15063aa35ff0 100644 (file)
@@ -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<JsonMention> mentions,
-        List<JsonQuotedAttachment> attachments
+        List<JsonQuotedAttachment> attachments,
+        @JsonInclude(JsonInclude.Include.NON_NULL) List<JsonTextStyle> 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<JsonMention> 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<JsonQuotedAttachment> 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().isEmpty()
+                ? quote.mentions().stream().map(JsonMention::from).toList()
+                : null;
+
+        final var attachments = !quote.attachments().isEmpty() ? quote.attachments()
+                .stream()
+                .map(JsonQuotedAttachment::from)
+                .toList() : List.<JsonQuotedAttachment>of();
+
+        final var textStyles = !quote.textStyles().isEmpty() ? quote.textStyles()
+                .stream()
+                .map(JsonTextStyle::from)
+                .toList() : null;
+
+        return new JsonQuote(id, author, authorNumber, authorUuid, text, mentions, attachments, textStyles);
     }
 }