]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/storage/groups/GroupInfo.java
Implement a sticker store
[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 abstract boolean isBlocked();
28
29 @JsonIgnore
30 public abstract void setBlocked(boolean blocked);
31
32 @JsonIgnore
33 public abstract int getMessageExpirationTime();
34
35 @JsonIgnore
36 public Set<SignalServiceAddress> getMembersWithout(SignalServiceAddress address) {
37 Set<SignalServiceAddress> members = new HashSet<>();
38 for (SignalServiceAddress member : getMembers()) {
39 if (!member.matches(address)) {
40 members.add(member);
41 }
42 }
43 return members;
44 }
45
46 @JsonIgnore
47 public boolean isMember(SignalServiceAddress address) {
48 for (SignalServiceAddress member : getMembers()) {
49 if (member.matches(address)) {
50 return true;
51 }
52 }
53 return false;
54 }
55 }