]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/json/JsonDataMessage.java
57201eda7c68f1553ec7c6783b3c04044c4c9ec8
[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.SignalServiceDataMessage;
6 import org.whispersystems.signalservice.api.messages.SignalServiceGroup;
7 import org.whispersystems.signalservice.api.messages.SignalServiceGroupV2;
8
9 import java.util.List;
10 import java.util.stream.Collectors;
11
12 class JsonDataMessage {
13
14 long timestamp;
15 String message;
16 int expiresInSeconds;
17
18 JsonReaction reaction;
19 JsonQuote quote;
20 List<JsonMention> mentions;
21 List<JsonAttachment> attachments;
22 JsonGroupInfo groupInfo;
23
24 JsonDataMessage(SignalServiceDataMessage dataMessage, Manager m) {
25 this.timestamp = dataMessage.getTimestamp();
26 if (dataMessage.getGroupContext().isPresent()) {
27 if (dataMessage.getGroupContext().get().getGroupV1().isPresent()) {
28 SignalServiceGroup groupInfo = dataMessage.getGroupContext().get().getGroupV1().get();
29 this.groupInfo = new JsonGroupInfo(groupInfo);
30 } else if (dataMessage.getGroupContext().get().getGroupV2().isPresent()) {
31 SignalServiceGroupV2 groupInfo = dataMessage.getGroupContext().get().getGroupV2().get();
32 this.groupInfo = new JsonGroupInfo(groupInfo);
33 }
34 }
35 if (dataMessage.getBody().isPresent()) {
36 this.message = dataMessage.getBody().get();
37 }
38 this.expiresInSeconds = dataMessage.getExpiresInSeconds();
39 if (dataMessage.getReaction().isPresent()) {
40 this.reaction = new JsonReaction(dataMessage.getReaction().get(), m);
41 }
42 if (dataMessage.getQuote().isPresent()) {
43 this.quote = new JsonQuote(dataMessage.getQuote().get(), m);
44 }
45 if (dataMessage.getMentions().isPresent()) {
46 this.mentions = dataMessage.getMentions()
47 .get()
48 .stream()
49 .map(mention -> new JsonMention(mention, m))
50 .collect(Collectors.toList());
51 } else {
52 this.mentions = List.of();
53 }
54 if (dataMessage.getAttachments().isPresent()) {
55 this.attachments = dataMessage.getAttachments()
56 .get()
57 .stream()
58 .map(JsonAttachment::new)
59 .collect(Collectors.toList());
60 } else {
61 this.attachments = List.of();
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 }