From 4b6c927efc3150fdd319fd0ade13173fe0a3e822 Mon Sep 17 00:00:00 2001 From: victorAnumudu Date: Tue, 23 Sep 2025 05:56:33 +0100 Subject: [PATCH] fixed validation bug --- .../profile_complete/ProfileCompleteCom.jsx | 299 +++++++++--------- 1 file changed, 153 insertions(+), 146 deletions(-) diff --git a/src/component/profile_complete/ProfileCompleteCom.jsx b/src/component/profile_complete/ProfileCompleteCom.jsx index 43b9476..7f50c5c 100644 --- a/src/component/profile_complete/ProfileCompleteCom.jsx +++ b/src/component/profile_complete/ProfileCompleteCom.jsx @@ -1,7 +1,7 @@ -import React, {useEffect, useMemo, useState} from "react"; +import React, {useCallback, useEffect, useMemo, useState} from "react"; import BreadcrumbComBS from "../breadcrumb/BreadcrumbComBS"; // import { useLocation } from "react-router-dom"; -// import { Form, Formik } from "formik"; +import { Form, Formik } from "formik"; import * as Yup from "yup"; import {useMutation, useQuery} from "@tanstack/react-query"; import getImage from "../../utils/getImage"; @@ -13,17 +13,16 @@ import {updateUserDetails} from "../../store/UserDetails"; import {useDispatch} from "react-redux"; -// const validationSchema = Yup.object().shape({ -// practice: Yup.string().required("Required"), -// specialization: Yup.string().required("Required"), -// introduction: Yup.string().min(1, "Minimum 10 characters").max(50, "Maximum 50 characters").required("Required"), -// }) - -// const initialValues = { -// practice: '', -// specialization: '', -// introduction: '', -// }; +const validationSchema = Yup.object().shape({ + practice: Yup.string().required("Required"), + specialization: Yup.string().when('practice', { + is: (value) => typeof value === 'string' && value.trim().length > 0, + then: (schema) => schema.required('Required'), + otherwise: (schema) => schema, + }), + introduction: Yup.string().min(1, "Minimum 1 character").max(50, "Maximum 50 characters"), + url_name: Yup.string().min(6, "Minimum 6 characters").max(16, "Maximum 16 characters").required("Required"), +}) export default function ProfileCompleteCom() { @@ -35,6 +34,7 @@ export default function ProfileCompleteCom() { const {state: {redirectLink}} = useLocation() const [practices, setPractices] = useState([]) + const [specialties, setSpecialties] = useState([]) const [initialValues, setInitialValues] = useState({ practice: '', @@ -43,14 +43,11 @@ export default function ProfileCompleteCom() { url_name: '' }) - const specialties = useMemo(() => { // FUNCTION TO UPDATE SPECIALITY ARRAY EACH TIME PRACTICE CHANGES + const handleUpdateSpecialties = (e) => { setInitialValues(prev => ({...prev, specialization: ''})) - if (!initialValues.practice) { - return [] - } - const specialtiesArr = practices.filter(item => item.practice == initialValues.practice)[0]?.specialties - return specialtiesArr - }, [initialValues.practice]) + const specialtiesArr = practices.filter(item => item.practice == e.target.value)[0]?.specialties + setSpecialties(specialtiesArr) + } const mutation = useMutation({ @@ -94,15 +91,11 @@ export default function ProfileCompleteCom() { } }) - const handlePracticeChange = ({target: {name, value}}) => { - setInitialValues(prev => ({...prev, [name]: value})) - } - - const handleCompleteProfile = () => { // FUNCTION TO COMPLETE PROFILE + const handleCompleteProfile = (values) => { // FUNCTION TO COMPLETE PROFILE let reqData = { token: localStorage.getItem('token'), // USER TOKEN uid: localStorage.getItem('uid'), // USER UID - ...initialValues + ...values } mutation.mutate(reqData) } @@ -146,132 +139,146 @@ export default function ProfileCompleteCom() {
{/*
*/} - <> -
-
- -
- {/* */} - - -
-
-
+ + {(props) => { + return ( +
+ <> +
+
+ +
+ {/* */} + + +
+
+
-
-
- -
- - -
-
-
+
+
+ +
+ + +
+
+
-
-
- -