]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/storage/groups/GroupInfo.java
b4f4e63a6cba5fd9a3522667bae29c655f281131
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / storage / groups / GroupInfo.java
1 package org.asamk.signal.manager.storage.groups;
2
3 import org.asamk.signal.manager.groups.GroupId;
4 import org.asamk.signal.manager.groups.GroupInviteLinkUrl;
5 import org.asamk.signal.manager.groups.GroupPermission;
6 import org.asamk.signal.manager.storage.recipients.RecipientId;
7
8 import java.util.Set;
9 import java.util.stream.Collectors;
10 import java.util.stream.Stream;
11
12 public abstract class GroupInfo {
13
14 public abstract GroupId getGroupId();
15
16 public abstract String getTitle();
17
18 public String getDescription() {
19 return null;
20 }
21
22 public abstract GroupInviteLinkUrl getGroupInviteLink();
23
24 public abstract Set<RecipientId> getMembers();
25
26 public Set<RecipientId> getPendingMembers() {
27 return Set.of();
28 }
29
30 public Set<RecipientId> getRequestingMembers() {
31 return Set.of();
32 }
33
34 public Set<RecipientId> getAdminMembers() {
35 return Set.of();
36 }
37
38 public abstract boolean isBlocked();
39
40 public abstract void setBlocked(boolean blocked);
41
42 public abstract int getMessageExpirationTimer();
43
44 public abstract boolean isAnnouncementGroup();
45
46 public abstract GroupPermission getPermissionAddMember();
47
48 public abstract GroupPermission getPermissionEditDetails();
49
50 public abstract GroupPermission getPermissionSendMessage();
51
52 public Set<RecipientId> getMembersWithout(RecipientId recipientId) {
53 return getMembers().stream().filter(member -> !member.equals(recipientId)).collect(Collectors.toSet());
54 }
55
56 public Set<RecipientId> getMembersIncludingPendingWithout(RecipientId recipientId) {
57 return Stream.concat(getMembers().stream(), getPendingMembers().stream())
58 .filter(member -> !member.equals(recipientId))
59 .collect(Collectors.toSet());
60 }
61
62 public boolean isMember(RecipientId recipientId) {
63 return getMembers().contains(recipientId);
64 }
65
66 public boolean isAdmin(RecipientId recipientId) {
67 return getAdminMembers().contains(recipientId);
68 }
69
70 public boolean isPendingMember(RecipientId recipientId) {
71 return getPendingMembers().contains(recipientId);
72 }
73 }