]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/storage/groups/GroupInfoV1.java
ea5ae7be0a15a13b996495d02529a7e774e56e74
[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.groups.GroupIdV1;
4 import org.asamk.signal.manager.groups.GroupIdV2;
5 import org.asamk.signal.manager.groups.GroupInviteLinkUrl;
6 import org.asamk.signal.manager.groups.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
29 public GroupInfoV1(GroupIdV1 groupId) {
30 this.groupId = groupId;
31 }
32
33 public GroupInfoV1(
34 final GroupIdV1 groupId,
35 final GroupIdV2 expectedV2Id,
36 final String name,
37 final Set<RecipientId> members,
38 final String color,
39 final int messageExpirationTime,
40 final boolean blocked,
41 final boolean archived
42 ) {
43 this.groupId = groupId;
44 this.expectedV2Id = expectedV2Id;
45 this.name = name;
46 this.members = new HashSet<>(members);
47 this.color = color;
48 this.messageExpirationTime = messageExpirationTime;
49 this.blocked = blocked;
50 this.archived = archived;
51 }
52
53 @Override
54 public GroupIdV1 getGroupId() {
55 return groupId;
56 }
57
58 @Override
59 public DistributionId getDistributionId() {
60 return null;
61 }
62
63 public GroupIdV2 getExpectedV2Id() {
64 if (expectedV2Id == null) {
65 expectedV2Id = GroupUtils.getGroupIdV2(groupId);
66 }
67 return expectedV2Id;
68 }
69
70 @Override
71 public String getTitle() {
72 return name;
73 }
74
75 @Override
76 public GroupInviteLinkUrl getGroupInviteLink() {
77 return null;
78 }
79
80 public Set<RecipientId> getMembers() {
81 return new HashSet<>(members);
82 }
83
84 @Override
85 public boolean isBlocked() {
86 return blocked;
87 }
88
89 @Override
90 public void setBlocked(final boolean blocked) {
91 this.blocked = blocked;
92 }
93
94 @Override
95 public int getMessageExpirationTimer() {
96 return messageExpirationTime;
97 }
98
99 @Override
100 public boolean isAnnouncementGroup() {
101 return false;
102 }
103
104 @Override
105 public GroupPermission getPermissionAddMember() {
106 return GroupPermission.EVERY_MEMBER;
107 }
108
109 @Override
110 public GroupPermission getPermissionEditDetails() {
111 return GroupPermission.EVERY_MEMBER;
112 }
113
114 @Override
115 public GroupPermission getPermissionSendMessage() {
116 return GroupPermission.EVERY_MEMBER;
117 }
118
119 public void addMembers(Collection<RecipientId> members) {
120 this.members.addAll(members);
121 }
122
123 public void removeMember(RecipientId recipientId) {
124 this.members.removeIf(member -> member.equals(recipientId));
125 }
126 }