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;
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;
}
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());
}
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());
}
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());
}