X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/a54fc92c05c5c8b532e029e82eedd73f9440e138..cd29144e81701698092f3334bee0c99c0f77f202:/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..2c1a5b80 100644 --- a/src/main/java/org/asamk/signal/json/JsonGroupInfo.java +++ b/src/main/java/org/asamk/signal/json/JsonGroupInfo.java @@ -1,34 +1,42 @@ package org.asamk.signal.json; +import com.fasterxml.jackson.annotation.JsonInclude; + +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 { +record JsonGroupInfo( + String groupId, + String type, + @JsonInclude(JsonInclude.Include.NON_NULL) String name, + @JsonInclude(JsonInclude.Include.NON_NULL) List members +) { - String groupId; - List members; - String name; - String type; + static JsonGroupInfo from(SignalServiceGroup groupInfo) { + return new JsonGroupInfo(Base64.getEncoder().encodeToString(groupInfo.getGroupId()), + groupInfo.getType().toString(), + groupInfo.getName().orNull(), + groupInfo.getMembers().isPresent() ? groupInfo.getMembers() + .get() + .stream() + .map(Util::getLegacyIdentifier) + .collect(Collectors.toList()) : null); + } - JsonGroupInfo(SignalServiceGroup groupInfo) { - this.groupId = Base64.encodeBytes(groupInfo.getGroupId()); - if (groupInfo.getMembers().isPresent()) { - this.members = new ArrayList<>(groupInfo.getMembers().get().size()); - for (SignalServiceAddress address : groupInfo.getMembers().get()) { - this.members.add(address.getLegacyIdentifier()); - } - } - if (groupInfo.getName().isPresent()) { - this.name = groupInfo.getName().get(); - } - this.type = groupInfo.getType().toString(); + static JsonGroupInfo from(SignalServiceGroupV2 groupInfo) { + return new JsonGroupInfo(GroupUtils.getGroupIdV2(groupInfo.getMasterKey()).toBase64(), + groupInfo.hasSignedGroupChange() ? "UPDATE" : "DELIVER", + null, + null); } - JsonGroupInfo(byte[] groupId) { - this.groupId = Base64.encodeBytes(groupId); + static JsonGroupInfo from(byte[] groupId) { + return new JsonGroupInfo(Base64.getEncoder().encodeToString(groupId), "DELIVER", null, null); } }