]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/json/JsonDataMessage.java
787f47abb79a4434327ef01b858ee68b9f6529b6
[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 JsonSticker sticker;
23 JsonGroupInfo groupInfo;
24
25 JsonDataMessage(SignalServiceDataMessage dataMessage, Manager m) {
26 this.timestamp = dataMessage.getTimestamp();
27 if (dataMessage.getGroupContext().isPresent()) {
28 if (dataMessage.getGroupContext().get().getGroupV1().isPresent()) {
29 SignalServiceGroup groupInfo = dataMessage.getGroupContext().get().getGroupV1().get();
30 this.groupInfo = new JsonGroupInfo(groupInfo);
31 } else if (dataMessage.getGroupContext().get().getGroupV2().isPresent()) {
32 SignalServiceGroupV2 groupInfo = dataMessage.getGroupContext().get().getGroupV2().get();
33 this.groupInfo = new JsonGroupInfo(groupInfo);
34 }
35 }
36 if (dataMessage.getBody().isPresent()) {
37 this.message = dataMessage.getBody().get();
38 }
39 this.expiresInSeconds = dataMessage.getExpiresInSeconds();
40 if (dataMessage.getReaction().isPresent()) {
41 this.reaction = new JsonReaction(dataMessage.getReaction().get(), m);
42 }
43 if (dataMessage.getQuote().isPresent()) {
44 this.quote = new JsonQuote(dataMessage.getQuote().get(), m);
45 }
46 if (dataMessage.getMentions().isPresent()) {
47 this.mentions = dataMessage.getMentions()
48 .get()
49 .stream()
50 .map(mention -> new JsonMention(mention, m))
51 .collect(Collectors.toList());
52 } else {
53 this.mentions = List.of();
54 }
55 if (dataMessage.getAttachments().isPresent()) {
56 this.attachments = dataMessage.getAttachments()
57 .get()
58 .stream()
59 .map(JsonAttachment::new)
60 .collect(Collectors.toList());
61 } else {
62 this.attachments = List.of();
63 }
64 if (dataMessage.getSticker().isPresent()) {
65 this.sticker = new JsonSticker(dataMessage.getSticker().get());
66 }
67 }
68
69 public JsonDataMessage(Signal.MessageReceived messageReceived) {
70 timestamp = messageReceived.getTimestamp();
71 message = messageReceived.getMessage();
72 groupInfo = new JsonGroupInfo(messageReceived.getGroupId());
73 reaction = null; // TODO Replace these 4 with the proper commands
74 quote = null;
75 mentions = null;
76 sticker = null;
77 attachments = messageReceived.getAttachments().stream().map(JsonAttachment::new).collect(Collectors.toList());
78 }
79
80 public JsonDataMessage(Signal.SyncMessageReceived messageReceived) {
81 timestamp = messageReceived.getTimestamp();
82 message = messageReceived.getMessage();
83 groupInfo = new JsonGroupInfo(messageReceived.getGroupId());
84 reaction = null; // TODO Replace these 4 with the proper commands
85 quote = null;
86 mentions = null;
87 sticker = null;
88 attachments = messageReceived.getAttachments().stream().map(JsonAttachment::new).collect(Collectors.toList());
89 }
90 }