Add members to space type for easy management members, and add autojo… (#5612)

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
This commit is contained in:
Denis Bykhov
2024-05-17 13:05:05 +07:00
committed by GitHub
parent fa3df9981d
commit 8f52663a11
25 changed files with 297 additions and 44 deletions
@@ -118,6 +118,7 @@
private: isPrivate,
members,
owners,
autoJoin,
archived: false,
icon,
color
@@ -146,6 +147,9 @@
if (teamspaceData.color !== teamspace?.color) {
update.color = teamspaceData.color
}
if (teamspaceData.autoJoin !== teamspace?.autoJoin) {
update.autoJoin = teamspaceData.autoJoin
}
if (teamspaceData.members.length !== teamspace?.members.length) {
update.members = teamspaceData.members
} else {
@@ -236,6 +240,7 @@
}
function handleMembersChanged (newMembers: Ref<Account>[]): void {
membersChanged = true
// If a member was removed we need to remove it from any roles assignments as well
const newMembersSet = new Set(newMembers)
const removedMembersSet = new Set(members.filter((m) => !newMembersSet.has(m)))
@@ -257,6 +262,21 @@
rolesAssignment[roleId] = newMembers
}
let autoJoin = teamspace?.autoJoin ?? spaceType?.autoJoin ?? false
$: setDefaultMembers(spaceType)
let membersChanged: boolean = false
function setDefaultMembers (typeType: SpaceType | undefined): void {
if (typeType === undefined) return
if (membersChanged) return
if (teamspace !== undefined) return
autoJoin = typeType.autoJoin ?? false
if (typeType.members === undefined || typeType.members.length === 0) return
members = typeType.members
}
$: canSave =
name.trim().length > 0 &&
!(members.length === 0 && isPrivate) &&
@@ -366,7 +386,7 @@
<Label label={presentation.string.MakePrivate} />
<span><Label label={presentation.string.MakePrivateDescription} /></span>
</div>
<Toggle bind:on={isPrivate} disabled={!isPrivate && members.length === 0} />
<Toggle id={'teamspace-private'} bind:on={isPrivate} disabled={!isPrivate && members.length === 0} />
</div>
<div class="antiGrid-row">
@@ -383,6 +403,14 @@
/>
</div>
<div class="antiGrid-row">
<div class="antiGrid-row__header withDesciption">
<Label label={core.string.AutoJoin} />
<span><Label label={core.string.AutoJoinDescr} /></span>
</div>
<Toggle bind:on={autoJoin} />
</div>
{#each roles as role}
<div class="antiGrid-row">
<div class="antiGrid-row__header">