]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/storage/groups/GroupInfo.java
Refactor to use GroupId class to wrap the byte array
[signal-cli] / src / main / java / org / asamk / signal / storage / groups / GroupInfo.java
1 package org.asamk.signal.storage.groups;
2
3 import com.fasterxml.jackson.annotation.JsonIgnore;
4
5 import org.asamk.signal.manager.GroupId;
6 import org.asamk.signal.manager.GroupInviteLinkUrl;
7 import org.whispersystems.signalservice.api.push.SignalServiceAddress;
8
9 import java.util.Set;
10 import java.util.stream.Collectors;
11 import java.util.stream.Stream;
12
13 public abstract class GroupInfo {
14
15 @JsonIgnore
16 public abstract GroupId getGroupId();
17
18 @JsonIgnore
19 public abstract String getTitle();
20
21 @JsonIgnore
22 public abstract GroupInviteLinkUrl getGroupInviteLink();
23
24 @JsonIgnore
25 public abstract Set<SignalServiceAddress> getMembers();
26
27 @JsonIgnore
28 public Set<SignalServiceAddress> getPendingMembers() {
29 return Set.of();
30 }
31
32 @JsonIgnore
33 public Set<SignalServiceAddress> getRequestingMembers() {
34 return Set.of();
35 }
36
37 @JsonIgnore
38 public abstract boolean isBlocked();
39
40 @JsonIgnore
41 public abstract void setBlocked(boolean blocked);
42
43 @JsonIgnore
44 public abstract int getMessageExpirationTime();
45
46 @JsonIgnore
47 public Set<SignalServiceAddress> getMembersWithout(SignalServiceAddress address) {
48 return getMembers().stream().filter(member -> !member.matches(address)).collect(Collectors.toSet());
49 }
50
51 @JsonIgnore
52 public Set<SignalServiceAddress> getMembersIncludingPendingWithout(SignalServiceAddress address) {
53 return Stream.concat(getMembers().stream(), getPendingMembers().stream())
54 .filter(member -> !member.matches(address))
55 .collect(Collectors.toSet());
56 }
57
58 @JsonIgnore
59 public boolean isMember(SignalServiceAddress address) {
60 for (SignalServiceAddress member : getMembers()) {
61 if (member.matches(address)) {
62 return true;
63 }
64 }
65 return false;
66 }
67
68 @JsonIgnore
69 public boolean isPendingMember(SignalServiceAddress address) {
70 for (SignalServiceAddress member : getPendingMembers()) {
71 if (member.matches(address)) {
72 return true;
73 }
74 }
75 return false;
76 }
77 }