]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/json/JsonQuote.java
Implement announcement groups
[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 final String author;
22
23 @JsonProperty
24 final String text;
25
26 @JsonProperty
27 @JsonInclude(JsonInclude.Include.NON_NULL)
28 final List<JsonMention> mentions;
29
30 @JsonProperty
31 final List<JsonQuotedAttachment> attachments;
32
33 JsonQuote(SignalServiceDataMessage.Quote quote, Manager m) {
34 this.id = quote.getId();
35 this.author = getLegacyIdentifier(m.resolveSignalServiceAddress(quote.getAuthor()));
36 this.text = quote.getText();
37
38 if (quote.getMentions() != null && quote.getMentions().size() > 0) {
39 this.mentions = quote.getMentions()
40 .stream()
41 .map(quotedMention -> new JsonMention(quotedMention, m))
42 .collect(Collectors.toList());
43 } else {
44 this.mentions = null;
45 }
46
47 if (quote.getAttachments().size() > 0) {
48 this.attachments = quote.getAttachments()
49 .stream()
50 .map(JsonQuotedAttachment::new)
51 .collect(Collectors.toList());
52 } else {
53 this.attachments = new ArrayList<>();
54 }
55 }
56 }