From 7a2954faba8eda6da6863719dc97fe1438f78a6d Mon Sep 17 00:00:00 2001 From: Smriti Doneria Date: Sat, 20 Jul 2024 14:08:39 +0530 Subject: [PATCH] fix: validation on profile page (#398) * fix validation of username and fullname * fix * fix message * Update validator.js * Update Profile.svelte * remove unused functions --------- Co-authored-by: Rotimi Best --- .../lib/components/Org/Settings/Profile.svelte | 15 +++++++-------- .../src/lib/utils/functions/validator.js | 13 +++++++++++++ apps/dashboard/src/lib/utils/translations/en.json | 4 +++- 3 files changed, 23 insertions(+), 9 deletions(-) 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",