]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/storage/groups/GroupInfoV2.java
Move group classes to separate package
[signal-cli] / src / main / java / org / asamk / signal / storage / groups / GroupInfoV2.java
index 823912d93bdddd626f99fb3ced790708766895aa..0139f879dde864d9f147b0e60daf085301f129f8 100644 (file)
@@ -1,5 +1,8 @@
 package org.asamk.signal.storage.groups;
 
+import org.asamk.signal.manager.groups.GroupIdV2;
+import org.asamk.signal.manager.groups.GroupInviteLinkUrl;
+import org.signal.storageservice.protos.groups.AccessControl;
 import org.signal.storageservice.protos.groups.local.DecryptedGroup;
 import org.signal.zkgroup.groups.GroupMasterKey;
 import org.whispersystems.signalservice.api.push.SignalServiceAddress;
@@ -11,16 +14,22 @@ import java.util.stream.Collectors;
 
 public class GroupInfoV2 extends GroupInfo {
 
+    private final GroupIdV2 groupId;
     private final GroupMasterKey masterKey;
 
     private boolean blocked;
     private DecryptedGroup group; // stored as a file with hexadecimal groupId as name
 
-    public GroupInfoV2(final byte[] groupId, final GroupMasterKey masterKey) {
-        super(groupId);
+    public GroupInfoV2(final GroupIdV2 groupId, final GroupMasterKey masterKey) {
+        this.groupId = groupId;
         this.masterKey = masterKey;
     }
 
+    @Override
+    public GroupIdV2 getGroupId() {
+        return groupId;
+    }
+
     public GroupMasterKey getMasterKey() {
         return masterKey;
     }
@@ -41,12 +50,26 @@ public class GroupInfoV2 extends GroupInfo {
         return this.group.getTitle();
     }
 
+    @Override
+    public GroupInviteLinkUrl getGroupInviteLink() {
+        if (this.group == null || this.group.getInviteLinkPassword() == null || (
+                this.group.getAccessControl().getAddFromInviteLink() != AccessControl.AccessRequired.ANY
+                        && this.group.getAccessControl().getAddFromInviteLink()
+                        != AccessControl.AccessRequired.ADMINISTRATOR
+        )) {
+            return null;
+        }
+
+        return GroupInviteLinkUrl.forGroup(masterKey, group);
+    }
+
     @Override
     public Set<SignalServiceAddress> getMembers() {
         if (this.group == null) {
             return Collections.emptySet();
         }
-        return group.getMembersList().stream()
+        return group.getMembersList()
+                .stream()
                 .map(m -> new SignalServiceAddress(UuidUtil.parseOrThrow(m.getUuid().toByteArray()), null))
                 .collect(Collectors.toSet());
     }
@@ -56,7 +79,8 @@ public class GroupInfoV2 extends GroupInfo {
         if (this.group == null) {
             return Collections.emptySet();
         }
-        return group.getPendingMembersList().stream()
+        return group.getPendingMembersList()
+                .stream()
                 .map(m -> new SignalServiceAddress(UuidUtil.parseOrThrow(m.getUuid().toByteArray()), null))
                 .collect(Collectors.toSet());
     }
@@ -66,7 +90,8 @@ public class GroupInfoV2 extends GroupInfo {
         if (this.group == null) {
             return Collections.emptySet();
         }
-        return group.getRequestingMembersList().stream()
+        return group.getRequestingMembersList()
+                .stream()
                 .map(m -> new SignalServiceAddress(UuidUtil.parseOrThrow(m.getUuid().toByteArray()), null))
                 .collect(Collectors.toSet());
     }