]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/json/JsonQuote.java
Add InactiveGroupLinkException
[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.Manager;
6 import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage;
7
8 import java.util.ArrayList;
9 import java.util.List;
10 import java.util.stream.Collectors;
11
12 import static org.asamk.signal.util.Util.getLegacyIdentifier;
13
14 public record JsonQuote(
15 long id,
16 @Deprecated String author,
17 String authorNumber,
18 String authorUuid,
19 String text,
20 @JsonInclude(JsonInclude.Include.NON_NULL) List<JsonMention> mentions,
21 List<JsonQuotedAttachment> attachments
22 ) {
23
24 static JsonQuote from(SignalServiceDataMessage.Quote quote, Manager m) {
25 final var id = quote.getId();
26 final var address = m.resolveSignalServiceAddress(quote.getAuthor());
27 final var author = getLegacyIdentifier(address);
28 final var authorNumber = address.getNumber().orNull();
29 final var authorUuid = address.getUuid().toString();
30 final var text = quote.getText();
31
32 final List<JsonMention> mentions;
33 if (quote.getMentions() != null && quote.getMentions().size() > 0) {
34 mentions = quote.getMentions()
35 .stream()
36 .map(quotedMention -> JsonMention.from(quotedMention, m))
37 .collect(Collectors.toList());
38 } else {
39 mentions = null;
40 }
41
42 final List<JsonQuotedAttachment> attachments;
43 if (quote.getAttachments().size() > 0) {
44 attachments = quote.getAttachments().stream().map(JsonQuotedAttachment::from).collect(Collectors.toList());
45 } else {
46 attachments = new ArrayList<>();
47 }
48
49 return new JsonQuote(id, author, authorNumber, authorUuid, text, mentions, attachments);
50 }
51 }