]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/json/JsonGroupInfo.java
Use record classes
[signal-cli] / src / main / java / org / asamk / signal / json / JsonGroupInfo.java
1 package org.asamk.signal.json;
2
3 import com.fasterxml.jackson.annotation.JsonInclude;
4
5 import org.asamk.signal.manager.groups.GroupUtils;
6 import org.asamk.signal.util.Util;
7 import org.whispersystems.signalservice.api.messages.SignalServiceGroup;
8 import org.whispersystems.signalservice.api.messages.SignalServiceGroupV2;
9
10 import java.util.Base64;
11 import java.util.List;
12 import java.util.stream.Collectors;
13
14 record JsonGroupInfo(
15 String groupId,
16 String type,
17 @JsonInclude(JsonInclude.Include.NON_NULL) String name,
18 @JsonInclude(JsonInclude.Include.NON_NULL) List<String> members
19 ) {
20
21 static JsonGroupInfo from(SignalServiceGroup groupInfo) {
22 return new JsonGroupInfo(Base64.getEncoder().encodeToString(groupInfo.getGroupId()),
23 groupInfo.getType().toString(),
24 groupInfo.getName().orNull(),
25 groupInfo.getMembers().isPresent() ? groupInfo.getMembers()
26 .get()
27 .stream()
28 .map(Util::getLegacyIdentifier)
29 .collect(Collectors.toList()) : null);
30 }
31
32 static JsonGroupInfo from(SignalServiceGroupV2 groupInfo) {
33 return new JsonGroupInfo(GroupUtils.getGroupIdV2(groupInfo.getMasterKey()).toBase64(),
34 groupInfo.hasSignedGroupChange() ? "UPDATE" : "DELIVER",
35 null,
36 null);
37 }
38
39 static JsonGroupInfo from(byte[] groupId) {
40 return new JsonGroupInfo(Base64.getEncoder().encodeToString(groupId), "DELIVER", null, null);
41 }
42 }