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