X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/a54fc92c05c5c8b532e029e82eedd73f9440e138..30690785fd51f9ba841f6f57d5f403bd970f26e3:/src/main/java/org/asamk/signal/json/JsonGroupInfo.java diff --git a/src/main/java/org/asamk/signal/json/JsonGroupInfo.java b/src/main/java/org/asamk/signal/json/JsonGroupInfo.java index 08bc19a9..de78186a 100644 --- a/src/main/java/org/asamk/signal/json/JsonGroupInfo.java +++ b/src/main/java/org/asamk/signal/json/JsonGroupInfo.java @@ -1,34 +1,59 @@ package org.asamk.signal.json; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +import org.asamk.signal.manager.groups.GroupUtils; +import org.asamk.signal.util.Util; import org.whispersystems.signalservice.api.messages.SignalServiceGroup; -import org.whispersystems.signalservice.api.push.SignalServiceAddress; -import org.whispersystems.util.Base64; +import org.whispersystems.signalservice.api.messages.SignalServiceGroupV2; -import java.util.ArrayList; +import java.util.Base64; import java.util.List; +import java.util.stream.Collectors; class JsonGroupInfo { - String groupId; - List members; - String name; - String type; + @JsonProperty + final String groupId; + + @JsonProperty + final String type; + + @JsonProperty + @JsonInclude(JsonInclude.Include.NON_NULL) + final String name; + + @JsonProperty + @JsonInclude(JsonInclude.Include.NON_NULL) + final List members; JsonGroupInfo(SignalServiceGroup groupInfo) { - this.groupId = Base64.encodeBytes(groupInfo.getGroupId()); + this.groupId = Base64.getEncoder().encodeToString(groupInfo.getGroupId()); + this.type = groupInfo.getType().toString(); + this.name = groupInfo.getName().orNull(); if (groupInfo.getMembers().isPresent()) { - this.members = new ArrayList<>(groupInfo.getMembers().get().size()); - for (SignalServiceAddress address : groupInfo.getMembers().get()) { - this.members.add(address.getLegacyIdentifier()); - } + this.members = groupInfo.getMembers() + .get() + .stream() + .map(Util::getLegacyIdentifier) + .collect(Collectors.toList()); + } else { + this.members = null; } - if (groupInfo.getName().isPresent()) { - this.name = groupInfo.getName().get(); - } - this.type = groupInfo.getType().toString(); + } + + JsonGroupInfo(SignalServiceGroupV2 groupInfo) { + this.groupId = GroupUtils.getGroupIdV2(groupInfo.getMasterKey()).toBase64(); + this.type = groupInfo.hasSignedGroupChange() ? "UPDATE" : "DELIVER"; + this.members = null; + this.name = null; } JsonGroupInfo(byte[] groupId) { - this.groupId = Base64.encodeBytes(groupId); + this.groupId = Base64.getEncoder().encodeToString(groupId); + this.type = "DELIVER"; + this.members = null; + this.name = null; } }