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