-
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
MembersList is now only for projects
Removed org roles, org-role select dropdowns, and so on from the MembersList component, which is now only for projects again.
- Loading branch information
Showing
4 changed files
with
23 additions
and
72 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
50 changes: 17 additions & 33 deletions
50
frontend/src/routes/(authenticated)/project/[project_code]/ChangeMemberRoleModal.svelte
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,60 +1,44 @@ | ||
<script lang="ts"> | ||
import { FormModal, type FormModalResult } from '$lib/components/modals'; | ||
import { tryParse } from '$lib/forms'; | ||
import { OrgRole, ProjectRole } from '$lib/gql/types'; | ||
import { ProjectRoleSelect, tryParse } from '$lib/forms'; | ||
import { ProjectRole } from '$lib/gql/types'; | ||
import t from '$lib/i18n'; | ||
import { z } from 'zod'; | ||
import { _changeProjectMemberRole } from './+page'; | ||
import { _changeOrgMemberRole } from '../../org/[org_id]/+page'; | ||
import type { UUID } from 'crypto'; | ||
import MemberRoleSelect from '$lib/forms/MemberRoleSelect.svelte'; | ||
export let roleType: 'project' | 'org' = 'project'; | ||
export let projectOrOrgId: string; | ||
export let projectId: string; | ||
$: schema = z.object({ | ||
role: roleType === 'project' | ||
? z.enum([ProjectRole.Editor, ProjectRole.Manager]) | ||
: z.enum([OrgRole.User, OrgRole.Admin]), | ||
role: z.enum([ProjectRole.Editor, ProjectRole.Manager]) | ||
}); | ||
type Schema = typeof schema; | ||
let formModal: FormModal<Schema>; | ||
$: form = formModal?.form(); | ||
let name: string; | ||
export async function open(member: { userId: UUID; name: string; role: ProjectRole | OrgRole }): Promise<FormModalResult<Schema>> { | ||
export async function open(member: { userId: UUID; name: string; role: ProjectRole }): Promise<FormModalResult<Schema>> { | ||
name = member.name; | ||
return await formModal.open(tryParse(schema, member), async () => { | ||
if (roleType === 'project') { | ||
const result = await _changeProjectMemberRole({ | ||
projectId: projectOrOrgId, | ||
userId: member.userId, | ||
role: $form.role as ProjectRole, | ||
}); | ||
if (result.error?.byType('ProjectMembersMustBeVerified')) { | ||
return { role: [$t('project_page.add_user.user_must_be_verified')] }; | ||
} | ||
if (result.error?.byType('ProjectMembersMustBeVerifiedForRole')) { | ||
return { role: [$t('project_page.add_user.manager_must_be_verified')] }; | ||
} | ||
return result.error?.message; | ||
} else if (roleType === 'org') { | ||
const result = await _changeOrgMemberRole( | ||
projectOrOrgId as UUID, | ||
member.userId, | ||
$form.role as OrgRole | ||
); | ||
return result.error?.message; | ||
const result = await _changeProjectMemberRole({ | ||
projectId: projectId, | ||
userId: member.userId, | ||
role: $form.role as ProjectRole, | ||
}); | ||
if (result.error?.byType('ProjectMembersMustBeVerified')) { | ||
return { role: [$t('project_page.add_user.user_must_be_verified')] }; | ||
} | ||
throw new Error(`Invalid role type: ${roleType as string}.`); | ||
if (result.error?.byType('ProjectMembersMustBeVerifiedForRole')) { | ||
return { role: [$t('project_page.add_user.manager_must_be_verified')] }; | ||
} | ||
return result.error?.message; | ||
}); | ||
} | ||
</script> | ||
|
||
<FormModal bind:this={formModal} {schema} let:errors> | ||
<span slot="title">{$t('project_page.change_role_modal.title', { name })}</span> | ||
<MemberRoleSelect type={roleType} bind:value={$form.role} error={errors.role} /> | ||
<ProjectRoleSelect bind:value={$form.role} error={errors.role} /> | ||
<span slot="submitText">{$t('project_page.change_role')}</span> | ||
</FormModal> |