]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/json/JsonDataMessage.java
Quotes, Mentions and Reactions in non-daemon JSON mode (#389)
[signal-cli] / src / main / java / org / asamk / signal / json / JsonDataMessage.java
1 package org.asamk.signal.json;
2
3 import org.asamk.Signal;
4 import org.asamk.signal.manager.Manager;
5 import org.whispersystems.signalservice.api.messages.SignalServiceAttachment;
6 import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage;
7 import org.whispersystems.signalservice.api.messages.SignalServiceGroup;
8 import org.whispersystems.signalservice.api.messages.SignalServiceGroupV2;
9
10 import java.util.ArrayList;
11 import java.util.List;
12 import java.util.stream.Collectors;
13
14 class JsonDataMessage {
15
16 long timestamp;
17 String message;
18 int expiresInSeconds;
19
20 JsonReaction reaction;
21 JsonQuote quote;
22 List<JsonMention> mentions;
23 List<JsonAttachment> attachments;
24 JsonGroupInfo groupInfo;
25
26 JsonDataMessage(SignalServiceDataMessage dataMessage, Manager m) {
27 this.timestamp = dataMessage.getTimestamp();
28 if (dataMessage.getGroupContext().isPresent()) {
29 if (dataMessage.getGroupContext().get().getGroupV1().isPresent()) {
30 SignalServiceGroup groupInfo = dataMessage.getGroupContext().get().getGroupV1().get();
31 this.groupInfo = new JsonGroupInfo(groupInfo);
32 } else if (dataMessage.getGroupContext().get().getGroupV2().isPresent()) {
33 SignalServiceGroupV2 groupInfo = dataMessage.getGroupContext().get().getGroupV2().get();
34 this.groupInfo = new JsonGroupInfo(groupInfo);
35 }
36 }
37 if (dataMessage.getBody().isPresent()) {
38 this.message = dataMessage.getBody().get();
39 }
40 this.expiresInSeconds = dataMessage.getExpiresInSeconds();
41 if (dataMessage.getReaction().isPresent()) {
42 this.reaction = new JsonReaction(dataMessage.getReaction().get(), m);
43 }
44 if (dataMessage.getQuote().isPresent()) {
45 this.quote = new JsonQuote(dataMessage.getQuote().get(), m);
46 }
47 if (dataMessage.getMentions().isPresent()) {
48 this.mentions = new ArrayList<>(dataMessage.getMentions().get().size());
49 for (SignalServiceDataMessage.Mention mention : dataMessage.getMentions().get()) {
50 this.mentions.add(new JsonMention(mention, m));
51 }
52 } else {
53 this.mentions = new ArrayList<>();
54 }
55 if (dataMessage.getAttachments().isPresent()) {
56 this.attachments = new ArrayList<>(dataMessage.getAttachments().get().size());
57 for (SignalServiceAttachment attachment : dataMessage.getAttachments().get()) {
58 this.attachments.add(new JsonAttachment(attachment));
59 }
60 } else {
61 this.attachments = new ArrayList<>();
62 }
63 }
64
65 public JsonDataMessage(Signal.MessageReceived messageReceived) {
66 timestamp = messageReceived.getTimestamp();
67 message = messageReceived.getMessage();
68 groupInfo = new JsonGroupInfo(messageReceived.getGroupId());
69 reaction = null; // TODO Replace these 3 with the proper commands
70 quote = null;
71 mentions = null;
72 attachments = messageReceived.getAttachments().stream().map(JsonAttachment::new).collect(Collectors.toList());
73 }
74
75 public JsonDataMessage(Signal.SyncMessageReceived messageReceived) {
76 timestamp = messageReceived.getTimestamp();
77 message = messageReceived.getMessage();
78 groupInfo = new JsonGroupInfo(messageReceived.getGroupId());
79 reaction = null; // TODO Replace these 3 with the proper commands
80 quote = null;
81 mentions = null;
82 attachments = messageReceived.getAttachments().stream().map(JsonAttachment::new).collect(Collectors.toList());
83 }
84 }