]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/storage/groups/GroupInfoV1.java
fd7bfe850235e6e40293f6087d8cef35fd615af2
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / storage / groups / GroupInfoV1.java
1 package org.asamk.signal.manager.storage.groups;
2
3 import org.asamk.signal.manager.api.GroupIdV1;
4 import org.asamk.signal.manager.api.GroupIdV2;
5 import org.asamk.signal.manager.api.GroupInviteLinkUrl;
6 import org.asamk.signal.manager.api.GroupPermission;
7 import org.asamk.signal.manager.groups.GroupUtils;
8 import org.asamk.signal.manager.storage.recipients.RecipientId;
9 import org.whispersystems.signalservice.api.push.DistributionId;
10
11 import java.util.Collection;
12 import java.util.HashSet;
13 import java.util.Set;
14
15 public final class GroupInfoV1 extends GroupInfo {
16
17 private final GroupIdV1 groupId;
18
19 private GroupIdV2 expectedV2Id;
20
21 public String name;
22
23 public Set<RecipientId> members = new HashSet<>();
24 public String color;
25 public int messageExpirationTime;
26 public boolean blocked;
27 public boolean archived;
28 private byte[] storageRecord;
29
30 public GroupInfoV1(GroupIdV1 groupId) {
31 this.groupId = groupId;
32 }
33
34 public GroupInfoV1(
35 final GroupIdV1 groupId,
36 final GroupIdV2 expectedV2Id,
37 final String name,
38 final Set<RecipientId> members,
39 final String color,
40 final int messageExpirationTime,
41 final boolean blocked,
42 final boolean archived,
43 final byte[] storageRecord
44 ) {
45 this.groupId = groupId;
46 this.expectedV2Id = expectedV2Id;
47 this.name = name;
48 this.members = new HashSet<>(members);
49 this.color = color;
50 this.messageExpirationTime = messageExpirationTime;
51 this.blocked = blocked;
52 this.archived = archived;
53 this.storageRecord = storageRecord;
54 }
55
56 @Override
57 public GroupIdV1 getGroupId() {
58 return groupId;
59 }
60
61 @Override
62 public DistributionId getDistributionId() {
63 return null;
64 }
65
66 public GroupIdV2 getExpectedV2Id() {
67 if (expectedV2Id == null) {
68 expectedV2Id = GroupUtils.getGroupIdV2(groupId);
69 }
70 return expectedV2Id;
71 }
72
73 @Override
74 public String getTitle() {
75 return name;
76 }
77
78 @Override
79 public GroupInviteLinkUrl getGroupInviteLink() {
80 return null;
81 }
82
83 public Set<RecipientId> getMembers() {
84 return new HashSet<>(members);
85 }
86
87 @Override
88 public boolean isBlocked() {
89 return blocked;
90 }
91
92 @Override
93 public void setBlocked(final boolean blocked) {
94 this.blocked = blocked;
95 }
96
97 @Override
98 public int getMessageExpirationTimer() {
99 return messageExpirationTime;
100 }
101
102 @Override
103 public boolean isAnnouncementGroup() {
104 return false;
105 }
106
107 @Override
108 public GroupPermission getPermissionAddMember() {
109 return GroupPermission.EVERY_MEMBER;
110 }
111
112 @Override
113 public GroupPermission getPermissionEditDetails() {
114 return GroupPermission.EVERY_MEMBER;
115 }
116
117 @Override
118 public GroupPermission getPermissionSendMessage() {
119 return GroupPermission.EVERY_MEMBER;
120 }
121
122 public void addMembers(Collection<RecipientId> members) {
123 this.members.addAll(members);
124 }
125
126 public void removeMember(RecipientId recipientId) {
127 this.members.removeIf(member -> member.equals(recipientId));
128 }
129
130 public byte[] getStorageRecord() {
131 return storageRecord;
132 }
133 }