diff --git a/apps/dashboard/src/lib/components/CourseLandingPage/index.svelte b/apps/dashboard/src/lib/components/CourseLandingPage/index.svelte index a1650686..36eea0e2 100644 --- a/apps/dashboard/src/lib/components/CourseLandingPage/index.svelte +++ b/apps/dashboard/src/lib/components/CourseLandingPage/index.svelte @@ -86,6 +86,7 @@ }); $: video = get(courseData, 'metadata.videoUrl'); + $: allowNewStudent = get(courseData, 'metadata.allowNewStudent'); $: bannerImage = get(courseData, 'logo'); $: lessons = get(courseData, 'lessons', []); $: instructor = get(courseData, 'metadata.instructor') || {}; @@ -120,7 +121,7 @@ if (editMode) return; startCoursePayment = true; }} - isDisabled={!courseData.metadata.allowNewStudent} + isDisabled={!allowNewStudent} /> {#if $handleOpenWidget.open} diff --git a/apps/dashboard/src/lib/components/Org/Settings/Domains.svelte b/apps/dashboard/src/lib/components/Org/Settings/Domains.svelte index f997c827..beab4f98 100644 --- a/apps/dashboard/src/lib/components/Org/Settings/Domains.svelte +++ b/apps/dashboard/src/lib/components/Org/Settings/Domains.svelte @@ -11,14 +11,28 @@ import { snackbar } from '$lib/components/Snackbar/store'; import SectionTitle from '../SectionTitle.svelte'; import VisitOrgSiteButton from '$lib/components/Buttons/VisitOrgSite.svelte'; + import { updateOrgSiteNameValidation } from '$lib/utils/functions/validator'; + + type Error = { + siteName: string; + }; let siteName = ''; - let errors = ''; + let errors: Error = { + siteName: '' + }; let isLoading = false; async function handleChangeDomain() { + errors = updateOrgSiteNameValidation(siteName) as Error; + + if (Object.values(errors).length) { + isLoading = false; + return; + } + if (blockedSubdomain.includes(siteName || '')) { - errors = 'Sitename already exists.'; + errors.siteName = 'Sitename already exists.'; return; } isLoading = true; @@ -31,7 +45,7 @@ console.log('Updating organisation', org); if (error) { console.log('Error: create organisation', error); - errors = 'Sitename already exists.'; + errors.siteName = 'Sitename already exists.'; } else { snackbar.success(); $currentOrg.siteName = siteName; @@ -49,8 +63,8 @@ } function resetErrors(_siteName: string) { - if (errors) { - errors = ''; + if (errors.siteName) { + errors.siteName = ''; } } @@ -76,7 +90,7 @@ placeholder="e.g traversymedia" className="mb-5 w-full" labelClassName="" - errorMessage={errors} + errorMessage={errors.siteName} />
+ z.string().min(5, { message: 'Organization must contain 5 or more characters' }); +const getSiteNameValidation = () => + z.string().min(5, { message: 'Site name must contain 5 or more characters' }); + const createQuizValidationSchema = z.object({ title: z.string().min(6, { message: 'Must be 6 or more characters long', @@ -76,9 +81,9 @@ const resetValidationSchema = z.object({ const onboardingValidationSchema = { stepOne: z.object({ - fullname: z.string().min(1, { message: 'Enter your fullname' }), - orgName: z.string().min(1, { message: 'Enter your organisation name' }), - siteName: z.string().min(1, { message: 'Enter your site name' }) + fullname: z.string().min(5, { message: 'Fullname must contain 5 or more characters' }), + orgName: getOrgNameValidation(), + siteName: getSiteNameValidation() }), stepTwo: z.object({ goal: z @@ -196,20 +201,23 @@ export const onboardingValidation = (fields = {}, step) => { export const createOrgValidation = (fields = {}) => { const schema = z.object({ - orgName: z.string().min(5, { - message: 'Must be 5 or more characters long', - invalid_type_error: 'Must not be empty' - }), - siteName: z.string().min(5, { - message: 'Must be 5 or more characters long', - invalid_type_error: 'Must not be empty' - }) + orgName: getOrgNameValidation(), + siteName: getSiteNameValidation() }); const { error } = schema.safeParse(fields); return processErrors(error); }; +export const updateOrgSiteNameValidation = (siteName) => { + const schema = z.object({ + siteName: getSiteNameValidation() + }); + const { error } = schema.safeParse({ siteName }); + + return processErrors(error); +}; + export const createQuizValidation = (fields = {}) => { const { error } = createQuizValidationSchema.safeParse(fields);