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