1 package org
.asamk
.signal
.json
;
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
;
10 import java
.util
.ArrayList
;
11 import java
.util
.List
;
12 import java
.util
.stream
.Collectors
;
14 class JsonDataMessage
{
20 JsonReaction reaction
;
22 List
<JsonMention
> mentions
;
23 List
<JsonAttachment
> attachments
;
24 JsonGroupInfo groupInfo
;
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
);
37 if (dataMessage
.getBody().isPresent()) {
38 this.message
= dataMessage
.getBody().get();
40 this.expiresInSeconds
= dataMessage
.getExpiresInSeconds();
41 if (dataMessage
.getReaction().isPresent()) {
42 this.reaction
= new JsonReaction(dataMessage
.getReaction().get(), m
);
44 if (dataMessage
.getQuote().isPresent()) {
45 this.quote
= new JsonQuote(dataMessage
.getQuote().get(), m
);
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
));
53 this.mentions
= new ArrayList
<>();
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
));
61 this.attachments
= new ArrayList
<>();
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
72 attachments
= messageReceived
.getAttachments().stream().map(JsonAttachment
::new).collect(Collectors
.toList());
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
82 attachments
= messageReceived
.getAttachments().stream().map(JsonAttachment
::new).collect(Collectors
.toList());