]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/storage/groups/GroupInfoV2.java
5e3115a1a696d29fc22dcddd9817d9e24b973d9e
[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().stream()
50 .map(m -> new SignalServiceAddress(UuidUtil.parseOrThrow(m.getUuid().toByteArray()), null))
51 .collect(Collectors.toSet());
52 }
53
54 @Override
55 public boolean isBlocked() {
56 return blocked;
57 }
58
59 @Override
60 public void setBlocked(final boolean blocked) {
61 this.blocked = blocked;
62 }
63
64 @Override
65 public int getMessageExpirationTime() {
66 return this.group != null && this.group.hasDisappearingMessagesTimer()
67 ? this.group.getDisappearingMessagesTimer().getDuration()
68 : 0;
69 }
70 }