]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/json/JsonQuote.java
d8d3c17fe623e73ab7dcec067eb7dcac4d927eca
[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.ArrayList;
8 import java.util.List;
9 import java.util.UUID;
10 import java.util.stream.Collectors;
11
12 public record JsonQuote(
13 long id,
14 @Deprecated String author,
15 String authorNumber,
16 String authorUuid,
17 String text,
18 @JsonInclude(JsonInclude.Include.NON_NULL) List<JsonMention> mentions,
19 List<JsonQuotedAttachment> attachments
20 ) {
21
22 static JsonQuote from(MessageEnvelope.Data.Quote quote) {
23 final var id = quote.id();
24 final var address = quote.author();
25 final var author = address.getLegacyIdentifier();
26 final var authorNumber = address.number().orElse(null);
27 final var authorUuid = address.uuid().map(UUID::toString).orElse(null);
28 final var text = quote.text().orElse(null);
29
30 final var mentions = quote.mentions().size() > 0 ? quote.mentions()
31 .stream()
32 .map(JsonMention::from)
33 .collect(Collectors.toList()) : null;
34
35 final var attachments = quote.attachments().size() > 0 ? quote.attachments()
36 .stream()
37 .map(JsonQuotedAttachment::from)
38 .collect(Collectors.toList()) : new ArrayList<JsonQuotedAttachment>();
39
40 return new JsonQuote(id, author, authorNumber, authorUuid, text, mentions, attachments);
41 }
42 }