]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/json/JsonQuote.java
Recreate recipient database with aci column
[signal-cli] / src / main / java / org / asamk / signal / json / JsonQuote.java
1 package org.asamk.signal.json;
2
3 import com.fasterxml.jackson.annotation.JsonInclude;
4
5 import org.asamk.signal.manager.api.MessageEnvelope;
6
7 import java.util.List;
8 import java.util.UUID;
9
10 public record JsonQuote(
11 long id,
12 @Deprecated String author,
13 String authorNumber,
14 String authorUuid,
15 String text,
16 @JsonInclude(JsonInclude.Include.NON_NULL) List<JsonMention> mentions,
17 List<JsonQuotedAttachment> attachments,
18 @JsonInclude(JsonInclude.Include.NON_NULL) List<JsonTextStyle> textStyles
19 ) {
20
21 static JsonQuote from(MessageEnvelope.Data.Quote quote) {
22 final var id = quote.id();
23 final var address = quote.author();
24 final var author = address.getLegacyIdentifier();
25 final var authorNumber = address.number().orElse(null);
26 final var authorUuid = address.uuid().map(UUID::toString).orElse(null);
27 final var text = quote.text().orElse(null);
28
29 final var mentions = !quote.mentions().isEmpty()
30 ? quote.mentions().stream().map(JsonMention::from).toList()
31 : null;
32
33 final var attachments = !quote.attachments().isEmpty() ? quote.attachments()
34 .stream()
35 .map(JsonQuotedAttachment::from)
36 .toList() : List.<JsonQuotedAttachment>of();
37
38 final var textStyles = !quote.textStyles().isEmpty() ? quote.textStyles()
39 .stream()
40 .map(JsonTextStyle::from)
41 .toList() : null;
42
43 return new JsonQuote(id, author, authorNumber, authorUuid, text, mentions, attachments, textStyles);
44 }
45 }