]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/storage/groups/GroupInfo.java
Implement accepting and declining group invitations
[signal-cli] / src / main / java / org / asamk / signal / storage / groups / GroupInfo.java
index d24a2694251ef85215559c24d544f85ab7d4ff13..4cd410b88a4d84e5d89bfcc3f81eed3a87908a78 100644 (file)
@@ -5,8 +5,9 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 
 import org.whispersystems.signalservice.api.push.SignalServiceAddress;
 
-import java.util.HashSet;
 import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 public abstract class GroupInfo {
 
@@ -44,18 +45,29 @@ public abstract class GroupInfo {
 
     @JsonIgnore
     public Set<SignalServiceAddress> getMembersWithout(SignalServiceAddress address) {
-        Set<SignalServiceAddress> members = new HashSet<>();
+        return getMembers().stream().filter(member -> !member.matches(address)).collect(Collectors.toSet());
+    }
+
+    @JsonIgnore
+    public Set<SignalServiceAddress> getMembersIncludingPendingWithout(SignalServiceAddress address) {
+        return Stream.concat(getMembers().stream(), getPendingMembers().stream())
+                .filter(member -> !member.matches(address))
+                .collect(Collectors.toSet());
+    }
+
+    @JsonIgnore
+    public boolean isMember(SignalServiceAddress address) {
         for (SignalServiceAddress member : getMembers()) {
-            if (!member.matches(address)) {
-                members.add(member);
+            if (member.matches(address)) {
+                return true;
             }
         }
-        return members;
+        return false;
     }
 
     @JsonIgnore
-    public boolean isMember(SignalServiceAddress address) {
-        for (SignalServiceAddress member : getMembers()) {
+    public boolean isPendingMember(SignalServiceAddress address) {
+        for (SignalServiceAddress member : getPendingMembers()) {
             if (member.matches(address)) {
                 return true;
             }