]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/storage/groups/GroupInfoV2.java
Reformat project
[signal-cli] / src / main / java / org / asamk / signal / storage / groups / GroupInfoV2.java
1 package org.asamk.signal.storage.groups;
2
3 import org.signal.storageservice.protos.groups.local.DecryptedGroup;
4 import org.signal.zkgroup.groups.GroupMasterKey;
5 import org.whispersystems.signalservice.api.push.SignalServiceAddress;
6 import org.whispersystems.signalservice.api.util.UuidUtil;
7
8 import java.util.Collections;
9 import java.util.Set;
10 import java.util.stream.Collectors;
11
12 public class GroupInfoV2 extends GroupInfo {
13
14 private final GroupMasterKey masterKey;
15
16 private boolean blocked;
17 private DecryptedGroup group; // stored as a file with hexadecimal groupId as name
18
19 public GroupInfoV2(final byte[] groupId, final GroupMasterKey masterKey) {
20 super(groupId);
21 this.masterKey = masterKey;
22 }
23
24 public GroupMasterKey getMasterKey() {
25 return masterKey;
26 }
27
28 public void setGroup(final DecryptedGroup group) {
29 this.group = group;
30 }
31
32 public DecryptedGroup getGroup() {
33 return group;
34 }
35
36 @Override
37 public String getTitle() {
38 if (this.group == null) {
39 return null;
40 }
41 return this.group.getTitle();
42 }
43
44 @Override
45 public Set<SignalServiceAddress> getMembers() {
46 if (this.group == null) {
47 return Collections.emptySet();
48 }
49 return group.getMembersList()
50 .stream()
51 .map(m -> new SignalServiceAddress(UuidUtil.parseOrThrow(m.getUuid().toByteArray()), null))
52 .collect(Collectors.toSet());
53 }
54
55 @Override
56 public Set<SignalServiceAddress> getPendingMembers() {
57 if (this.group == null) {
58 return Collections.emptySet();
59 }
60 return group.getPendingMembersList()
61 .stream()
62 .map(m -> new SignalServiceAddress(UuidUtil.parseOrThrow(m.getUuid().toByteArray()), null))
63 .collect(Collectors.toSet());
64 }
65
66 @Override
67 public Set<SignalServiceAddress> getRequestingMembers() {
68 if (this.group == null) {
69 return Collections.emptySet();
70 }
71 return group.getRequestingMembersList()
72 .stream()
73 .map(m -> new SignalServiceAddress(UuidUtil.parseOrThrow(m.getUuid().toByteArray()), null))
74 .collect(Collectors.toSet());
75 }
76
77 @Override
78 public boolean isBlocked() {
79 return blocked;
80 }
81
82 @Override
83 public void setBlocked(final boolean blocked) {
84 this.blocked = blocked;
85 }
86
87 @Override
88 public int getMessageExpirationTime() {
89 return this.group != null && this.group.hasDisappearingMessagesTimer()
90 ? this.group.getDisappearingMessagesTimer().getDuration()
91 : 0;
92 }
93 }