X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/dd4225dcb193218a6c20a2e12514d0dac2e2a3a0..46a4c2c0d0a36b7f230fc2c2d47aa371a6e02d35:/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 bc3e7e0e..d79941ed 100644 --- a/src/main/java/org/asamk/signal/json/JsonGroupInfo.java +++ b/src/main/java/org/asamk/signal/json/JsonGroupInfo.java @@ -1,41 +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.whispersystems.signalservice.api.messages.SignalServiceGroup; import org.whispersystems.signalservice.api.messages.SignalServiceGroupV2; import org.whispersystems.signalservice.api.push.SignalServiceAddress; -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.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()); - } - } - if (groupInfo.getName().isPresent()) { - this.name = groupInfo.getName().get(); + this.members = groupInfo.getMembers() + .get() + .stream() + .map(SignalServiceAddress::getLegacyIdentifier) + .collect(Collectors.toList()); + } else { + this.members = null; } - 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.getEncoder().encodeToString(groupId); + this.type = "DELIVER"; + this.members = null; + this.name = null; } }