diff --git a/apps/dashboard/src/lib/components/Org/Settings/Profile.svelte b/apps/dashboard/src/lib/components/Org/Settings/Profile.svelte index 2d4e3af3..1fd4327f 100644 --- a/apps/dashboard/src/lib/components/Org/Settings/Profile.svelte +++ b/apps/dashboard/src/lib/components/Org/Settings/Profile.svelte @@ -13,21 +13,18 @@ import { t } from '$lib/utils/functions/translations'; import LanguagePicker from './LanguagePicker.svelte'; import { handleLocaleChange } from '$lib/utils/functions/translations'; - import { updateProfileEmailValidation } from '$lib/utils/functions/validator'; + import { updateProfileValidation } from '$lib/utils/functions/validator'; let avatar = ''; let loading = false; let hasLangChanged = false; let locale = ''; - let errors = { - email: '' - } + let errors = {}; async function handleUpdate() { - errors = updateProfileEmailValidation($profile.email) - - if (Object.values(errors).length) { + errors = updateProfileValidation($profile); + if (Object.values(errors).some((error) => error)) { loading = false; return; } @@ -105,17 +102,19 @@ label={$t('settings.profile.personal_information.full_name')} bind:value={$profile.fullname} className="w-full lg:w-60 mb-4" + errorMessage={$t(errors.fullname)} /> diff --git a/apps/dashboard/src/lib/utils/functions/validator.js b/apps/dashboard/src/lib/utils/functions/validator.js index ffca852c..52d0ce0d 100644 --- a/apps/dashboard/src/lib/utils/functions/validator.js +++ b/apps/dashboard/src/lib/utils/functions/validator.js @@ -125,6 +125,12 @@ const onboardingValidationSchema = { }) }; +const updateProfileValidationSchema = z.object({ + email: z.string().email({ message: 'validations.user_profile.email' }), + username: z.string().nonempty({ message: 'validations.user_profile.username' }), + fullname: z.string().min(5, { message: 'validations.user_profile.fullname' }) +}); + export const getConfirmPasswordError = ({ password, confirmPassword }) => { return password > 6 && confirmPassword > 6 && password !== confirmPassword ? `${t.get('validations.confirm_password.not_match')}` @@ -213,6 +219,13 @@ export const onboardingValidation = (fields = {}, step) => { return processErrors(error); }; +export const updateProfileValidation = (fields = {}) => { + const schema = updateProfileValidationSchema; + const { error } = schema.safeParse(fields); + + return processErrors(error); +}; + // export const createTemplateExerciseValidation = (fields = {}) => { // const schema = z.object({ // orgName: z.string().min(5, { diff --git a/apps/dashboard/src/lib/utils/translations/en.json b/apps/dashboard/src/lib/utils/translations/en.json index 6fb4b06b..b45b3c61 100644 --- a/apps/dashboard/src/lib/utils/translations/en.json +++ b/apps/dashboard/src/lib/utils/translations/en.json @@ -1329,7 +1329,9 @@ "validations": { "user_profile": { - "email": "Invalid email address" + "email": "Invalid email address", + "username":"Username cannot be empty", + "fullname":"Name should be minimum of 5 characters" }, "organization_name": { "min_char": "Organization must contain 5 or more characters",