import org.whispersystems.signalservice.api.messages.SignalServiceAttachment;
import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage;
import org.whispersystems.signalservice.api.messages.SignalServiceGroup;
+import org.whispersystems.signalservice.api.messages.SignalServiceGroupV2;
import java.util.ArrayList;
import java.util.List;
JsonDataMessage(SignalServiceDataMessage dataMessage) {
this.timestamp = dataMessage.getTimestamp();
- if (dataMessage.getGroupContext().isPresent() && dataMessage.getGroupContext().get().getGroupV1().isPresent()) {
- SignalServiceGroup groupInfo = dataMessage.getGroupContext().get().getGroupV1().get();
- this.groupInfo = new JsonGroupInfo(groupInfo);
+ if (dataMessage.getGroupContext().isPresent()) {
+ if (dataMessage.getGroupContext().get().getGroupV1().isPresent()) {
+ SignalServiceGroup groupInfo = dataMessage.getGroupContext().get().getGroupV1().get();
+ this.groupInfo = new JsonGroupInfo(groupInfo);
+ } else if (dataMessage.getGroupContext().get().getGroupV2().isPresent()) {
+ SignalServiceGroupV2 groupInfo = dataMessage.getGroupContext().get().getGroupV2().get();
+ this.groupInfo = new JsonGroupInfo(groupInfo);
+ }
}
if (dataMessage.getBody().isPresent()) {
this.message = dataMessage.getBody().get();
package org.asamk.signal.json;
+import org.asamk.signal.manager.GroupUtils;
import org.whispersystems.signalservice.api.messages.SignalServiceGroup;
+import org.whispersystems.signalservice.api.messages.SignalServiceGroupV2;
import org.whispersystems.signalservice.api.push.SignalServiceAddress;
import org.whispersystems.util.Base64;
this.type = groupInfo.getType().toString();
}
+ JsonGroupInfo(SignalServiceGroupV2 groupInfo) {
+ this.groupId = Base64.encodeBytes(GroupUtils.getGroupId(groupInfo.getMasterKey()));
+ this.type = groupInfo.hasSignedGroupChange() ? "UPDATE" : "DELIVER";
+ }
+
JsonGroupInfo(byte[] groupId) {
this.groupId = Base64.encodeBytes(groupId);
}