package org.asamk.signal.json; import org.asamk.Signal; import org.whispersystems.signalservice.api.messages.multidevice.ReadMessage; import org.whispersystems.signalservice.api.messages.multidevice.SignalServiceSyncMessage; import org.whispersystems.signalservice.api.push.SignalServiceAddress; import java.util.ArrayList; import java.util.List; enum JsonSyncMessageType { CONTACTS_SYNC, GROUPS_SYNC, REQUEST_SYNC } class JsonSyncMessage { JsonSyncDataMessage sentMessage; List blockedNumbers; List readMessages; JsonSyncMessageType type; JsonSyncMessage(SignalServiceSyncMessage syncMessage) { if (syncMessage.getSent().isPresent()) { this.sentMessage = new JsonSyncDataMessage(syncMessage.getSent().get()); } if (syncMessage.getBlockedList().isPresent()) { this.blockedNumbers = new ArrayList<>(syncMessage.getBlockedList().get().getAddresses().size()); for (SignalServiceAddress address : syncMessage.getBlockedList().get().getAddresses()) { this.blockedNumbers.add(address.getLegacyIdentifier()); } } if (syncMessage.getRead().isPresent()) { this.readMessages = syncMessage.getRead().get(); } if (syncMessage.getContacts().isPresent()) { this.type = JsonSyncMessageType.CONTACTS_SYNC; } else if (syncMessage.getGroups().isPresent()) { this.type = JsonSyncMessageType.GROUPS_SYNC; } else if (syncMessage.getRequest().isPresent()) { this.type = JsonSyncMessageType.REQUEST_SYNC; } } JsonSyncMessage(Signal.SyncMessageReceived messageReceived) { sentMessage = new JsonSyncDataMessage(messageReceived); } }