]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/storage/groups/GroupInfo.java
Show pending and requesting members of v2 groups
[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 import com.fasterxml.jackson.annotation.JsonProperty;
5
6 import org.whispersystems.signalservice.api.push.SignalServiceAddress;
7
8 import java.util.HashSet;
9 import java.util.Set;
10
11 public abstract class GroupInfo {
12
13 @JsonProperty
14 public final byte[] groupId;
15
16 public GroupInfo(byte[] groupId) {
17 this.groupId = groupId;
18 }
19
20 @JsonIgnore
21 public abstract String getTitle();
22
23 @JsonIgnore
24 public abstract Set<SignalServiceAddress> getMembers();
25
26 @JsonIgnore
27 public Set<SignalServiceAddress> getPendingMembers() {
28 return Set.of();
29 }
30
31 @JsonIgnore
32 public Set<SignalServiceAddress> getRequestingMembers() {
33 return Set.of();
34 }
35
36 @JsonIgnore
37 public abstract boolean isBlocked();
38
39 @JsonIgnore
40 public abstract void setBlocked(boolean blocked);
41
42 @JsonIgnore
43 public abstract int getMessageExpirationTime();
44
45 @JsonIgnore
46 public Set<SignalServiceAddress> getMembersWithout(SignalServiceAddress address) {
47 Set<SignalServiceAddress> members = new HashSet<>();
48 for (SignalServiceAddress member : getMembers()) {
49 if (!member.matches(address)) {
50 members.add(member);
51 }
52 }
53 return members;
54 }
55
56 @JsonIgnore
57 public boolean isMember(SignalServiceAddress address) {
58 for (SignalServiceAddress member : getMembers()) {
59 if (member.matches(address)) {
60 return true;
61 }
62 }
63 return false;
64 }
65 }