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