1 package org
.asamk
.signal
.storage
.groups
;
3 import com
.fasterxml
.jackson
.annotation
.JsonIgnore
;
4 import com
.fasterxml
.jackson
.annotation
.JsonProperty
;
6 import org
.asamk
.signal
.manager
.GroupInviteLinkUrl
;
7 import org
.whispersystems
.signalservice
.api
.push
.SignalServiceAddress
;
10 import java
.util
.stream
.Collectors
;
11 import java
.util
.stream
.Stream
;
13 public abstract class GroupInfo
{
16 public final byte[] groupId
;
18 public GroupInfo(byte[] groupId
) {
19 this.groupId
= groupId
;
23 public abstract String
getTitle();
26 public abstract GroupInviteLinkUrl
getGroupInviteLink();
29 public abstract Set
<SignalServiceAddress
> getMembers();
32 public Set
<SignalServiceAddress
> getPendingMembers() {
37 public Set
<SignalServiceAddress
> getRequestingMembers() {
42 public abstract boolean isBlocked();
45 public abstract void setBlocked(boolean blocked
);
48 public abstract int getMessageExpirationTime();
51 public Set
<SignalServiceAddress
> getMembersWithout(SignalServiceAddress address
) {
52 return getMembers().stream().filter(member
-> !member
.matches(address
)).collect(Collectors
.toSet());
56 public Set
<SignalServiceAddress
> getMembersIncludingPendingWithout(SignalServiceAddress address
) {
57 return Stream
.concat(getMembers().stream(), getPendingMembers().stream())
58 .filter(member
-> !member
.matches(address
))
59 .collect(Collectors
.toSet());
63 public boolean isMember(SignalServiceAddress address
) {
64 for (SignalServiceAddress member
: getMembers()) {
65 if (member
.matches(address
)) {
73 public boolean isPendingMember(SignalServiceAddress address
) {
74 for (SignalServiceAddress member
: getPendingMembers()) {
75 if (member
.matches(address
)) {