import org.whispersystems.signalservice.api.push.SignalServiceAddress;
-import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
-public class GroupInfo {
+public abstract class GroupInfo {
@JsonProperty
public final byte[] groupId;
- @JsonProperty
- public String name;
-
- @JsonProperty
- public Set<String> members = new HashSet<>();
- @JsonProperty
- public boolean active;
- @JsonProperty
- public String color;
-
- private long avatarId;
-
public GroupInfo(byte[] groupId) {
this.groupId = groupId;
}
- public GroupInfo(@JsonProperty("groupId") byte[] groupId, @JsonProperty("name") String name, @JsonProperty("members") Collection<String> members, @JsonProperty("avatarId") long avatarId, @JsonProperty("color") String color) {
- this.groupId = groupId;
- this.name = name;
- this.members.addAll(members);
- this.avatarId = avatarId;
- this.color = color;
+ @JsonIgnore
+ public abstract String getTitle();
+
+ @JsonIgnore
+ public abstract Set<SignalServiceAddress> getMembers();
+
+ @JsonIgnore
+ public Set<SignalServiceAddress> getPendingMembers() {
+ return Set.of();
}
@JsonIgnore
- public long getAvatarId() {
- return avatarId;
+ public Set<SignalServiceAddress> getRequestingMembers() {
+ return Set.of();
}
@JsonIgnore
- public Set<SignalServiceAddress> getMembers() {
- Set<SignalServiceAddress> addresses = new HashSet<>(members.size());
- for (String member : members) {
- addresses.add(new SignalServiceAddress(null, member));
+ public abstract boolean isBlocked();
+
+ @JsonIgnore
+ public abstract void setBlocked(boolean blocked);
+
+ @JsonIgnore
+ public abstract int getMessageExpirationTime();
+
+ @JsonIgnore
+ public Set<SignalServiceAddress> getMembersWithout(SignalServiceAddress address) {
+ Set<SignalServiceAddress> members = new HashSet<>();
+ for (SignalServiceAddress member : getMembers()) {
+ if (!member.matches(address)) {
+ members.add(member);
+ }
}
- return addresses;
+ return members;
}
- public void addMembers(Collection<SignalServiceAddress> members) {
- for (SignalServiceAddress member : members) {
- this.members.add(member.getNumber().get());
+ @JsonIgnore
+ public boolean isMember(SignalServiceAddress address) {
+ for (SignalServiceAddress member : getMembers()) {
+ if (member.matches(address)) {
+ return true;
+ }
}
+ return false;
}
}