1 package org
.asamk
.signal
.json
;
3 import com
.fasterxml
.jackson
.annotation
.JsonInclude
;
4 import com
.fasterxml
.jackson
.annotation
.JsonProperty
;
6 import org
.asamk
.Signal
;
7 import org
.asamk
.signal
.manager
.Manager
;
8 import org
.asamk
.signal
.util
.Util
;
9 import org
.whispersystems
.signalservice
.api
.messages
.multidevice
.SignalServiceSyncMessage
;
11 import java
.util
.Base64
;
12 import java
.util
.List
;
13 import java
.util
.stream
.Collectors
;
15 enum JsonSyncMessageType
{
21 class JsonSyncMessage
{
24 @JsonInclude(JsonInclude
.Include
.NON_NULL
)
25 final JsonSyncDataMessage sentMessage
;
28 @JsonInclude(JsonInclude
.Include
.NON_NULL
)
29 final List
<String
> blockedNumbers
;
32 @JsonInclude(JsonInclude
.Include
.NON_NULL
)
33 final List
<String
> blockedGroupIds
;
36 @JsonInclude(JsonInclude
.Include
.NON_NULL
)
37 final List
<JsonSyncReadMessage
> readMessages
;
40 @JsonInclude(JsonInclude
.Include
.NON_NULL
)
41 final JsonSyncMessageType type
;
43 JsonSyncMessage(SignalServiceSyncMessage syncMessage
, Manager m
) {
44 this.sentMessage
= syncMessage
.getSent().isPresent()
45 ?
new JsonSyncDataMessage(syncMessage
.getSent().get(), m
)
47 if (syncMessage
.getBlockedList().isPresent()) {
48 final var base64
= Base64
.getEncoder();
49 this.blockedNumbers
= syncMessage
.getBlockedList()
53 .map(Util
::getLegacyIdentifier
)
54 .collect(Collectors
.toList());
55 this.blockedGroupIds
= syncMessage
.getBlockedList()
59 .map(base64
::encodeToString
)
60 .collect(Collectors
.toList());
62 this.blockedNumbers
= null;
63 this.blockedGroupIds
= null;
65 if (syncMessage
.getRead().isPresent()) {
66 this.readMessages
= syncMessage
.getRead()
69 .map(JsonSyncReadMessage
::new)
70 .collect(Collectors
.toList());
72 this.readMessages
= null;
75 if (syncMessage
.getContacts().isPresent()) {
76 this.type
= JsonSyncMessageType
.CONTACTS_SYNC
;
77 } else if (syncMessage
.getGroups().isPresent()) {
78 this.type
= JsonSyncMessageType
.GROUPS_SYNC
;
79 } else if (syncMessage
.getRequest().isPresent()) {
80 this.type
= JsonSyncMessageType
.REQUEST_SYNC
;
86 JsonSyncMessage(Signal
.SyncMessageReceived messageReceived
) {
87 this.sentMessage
= new JsonSyncDataMessage(messageReceived
);
88 this.blockedNumbers
= null;
89 this.blockedGroupIds
= null;
90 this.readMessages
= null;