From: AsamK Date: Mon, 21 Dec 2020 10:45:42 +0000 (+0100) Subject: Add group v2 id to json output X-Git-Tag: v0.7.1~7 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/2617757edbcc391f020d7ea5d8005372a9f5ffb9?ds=sidebyside Add group v2 id to json output --- diff --git a/CHANGELOG.md b/CHANGELOG.md index 81c204fc..9494ae8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ # Changelog ## [Unreleased] +### Fixed +- Include group ids for v2 groups in json output ## [0.7.0] - 2020-12-15 ### Added diff --git a/src/main/java/org/asamk/signal/json/JsonDataMessage.java b/src/main/java/org/asamk/signal/json/JsonDataMessage.java index 7aa16ce4..653a59e6 100644 --- a/src/main/java/org/asamk/signal/json/JsonDataMessage.java +++ b/src/main/java/org/asamk/signal/json/JsonDataMessage.java @@ -4,6 +4,7 @@ import org.asamk.Signal; 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; @@ -19,9 +20,14 @@ class JsonDataMessage { 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(); diff --git a/src/main/java/org/asamk/signal/json/JsonGroupInfo.java b/src/main/java/org/asamk/signal/json/JsonGroupInfo.java index 08bc19a9..970cde52 100644 --- a/src/main/java/org/asamk/signal/json/JsonGroupInfo.java +++ b/src/main/java/org/asamk/signal/json/JsonGroupInfo.java @@ -1,6 +1,8 @@ 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; @@ -28,6 +30,11 @@ class JsonGroupInfo { 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); }