From b840f28667f02f5a8d29fe3410fe55177147f91b Mon Sep 17 00:00:00 2001 From: victorAnumudu Date: Thu, 14 Aug 2025 12:22:29 +0100 Subject: [PATCH] fixed API issue --- .../profile_complete/ProfileCompleteCom.jsx | 214 ++++++++++-------- 1 file changed, 122 insertions(+), 92 deletions(-) diff --git a/src/component/profile_complete/ProfileCompleteCom.jsx b/src/component/profile_complete/ProfileCompleteCom.jsx index 9975999..012a1d7 100644 --- a/src/component/profile_complete/ProfileCompleteCom.jsx +++ b/src/component/profile_complete/ProfileCompleteCom.jsx @@ -1,67 +1,99 @@ -import React, { useEffect, useState } from "react"; +import React, { useEffect, useMemo, useState } from "react"; import BreadcrumbComBS from "../breadcrumb/BreadcrumbComBS"; -import { useLocation } from "react-router-dom"; -import { Form, Formik } from "formik"; +// import { useLocation } from "react-router-dom"; +// import { Form, Formik } from "formik"; import * as Yup from "yup"; import { useMutation, useQuery } from "@tanstack/react-query"; import getImage from "../../utils/getImage"; import { IoMdArrowDropdown } from "react-icons/io"; import { completeProfile, getCommonPractice } from '../../services/services'; +import siteLinks from "../../links/siteLinks"; +import { useNavigate } from "react-router-dom"; -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 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 initialValues = { +// practice: '', +// specialization: '', +// introduction: '', +// }; export default function ProfileCompleteCom(){ - const [practices, setPractices] = useState({practice: [], specialization: []}) + const navigate = useNavigate() + + const [practices, setPractices] = useState([]) + + const [initialValues, setInitialValues] = useState({ + practice: '', + specialization: '', + introduction: '', + }) + + const specialties = useMemo(()=>{ // FUNCTION TO UPDATE SPECIALITY ARRAY EACH TIME PRACTICE CHANGES + setInitialValues(prev => ({...prev, specialization: ''})) + if(!initialValues.practice){ + return [] + } + const specialtiesArr = practices.filter(item => item.practice == initialValues.practice)[0]?.specialties + return specialtiesArr + },[initialValues.practice]) - const {state:{profile_completed}} = useLocation() const mutation = useMutation({ mutationFn: (fields) => { + const {practice, specialization} = fields + if(!practice || !specialization){ + throw new Error('Please select both practice and specialization fields') + } return completeProfile(fields) }, + onError: () => { + setTimeout(()=>{mutation.reset()}, 4000) + }, onSuccess: (res) => { - console.log('res', res) + setTimeout(()=>{ + navigate(siteLinks.home) + },2000) + // console.log('res', res) } }) - const handleCompleteProfile = (values, helpers) => { - // helpers.resetForm() - let reqData = { - token: localStorage.getItem('token'), // USER TOKEN - uid: localStorage.getItem('uid'), // USER UID - // ...values - } - console.log('values', values, helpers) - // mutation.mutate(reqData) - } - const commonPractices = useMutation({ // FUNCTION TO GET COMMON PRACTICES mutationFn: (fields) => { return getCommonPractice(fields) }, onError: ()=> { - setPractices({practice: [], specialization: []}) + setPractices([]) }, onSuccess: (res) => { - let returnPractices = [] - let returnSpecialization = [] - setPractices(res) + if(!res?.data){ + return setPractices([]) + } + let returnPractices = Object.entries(res?.data).filter(([key, value]) => typeof value == 'object')?.map(item => item[1]) + setPractices(returnPractices) } }) + const handlePracticeChange = ({target:{name, value}}) => { + setInitialValues(prev => ({...prev, [name]:value})) + } + + const handleCompleteProfile = () => { // FUNCTION TO COMPLETE PROFILE + let reqData = { + token: localStorage.getItem('token'), // USER TOKEN + uid: localStorage.getItem('uid'), // USER UID + ...initialValues + } + mutation.mutate(reqData) + } + useEffect(()=>{ let reqData = { token: localStorage.getItem('token'), // USER TOKEN @@ -70,8 +102,6 @@ export default function ProfileCompleteCom(){ commonPractices.mutate(reqData) },[]) - console.log('practices', practices) - return <> @@ -101,67 +131,67 @@ export default function ProfileCompleteCom(){ */} {/*
*/}
- - {(props) => { - return ( -
- {/*
*/} +
+ {/*
*/} + <> +
+
+ +
+ {/* */} + + +
+
+
+ +
+
+ +
+ + +
+
+
+ +
+
+ +