import React, { useEffect, useMemo, useState } from "react"; import BreadcrumbComBS from "../breadcrumb/BreadcrumbComBS"; // 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 { useLocation, useNavigate } from "react-router-dom"; 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: '', // }; export default function ProfileCompleteCom(){ const dispatch = useDispatch() const navigate = useNavigate() const {state:{redirectLink}} = useLocation() 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 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) => { if(res.data.resultCode != '0'){ throw({message: res?.data?.resultDescription}) } dispatch(updateUserDetails({profile_completed: res?.data?.profile_completed })); setTimeout(()=>{ navigate(redirectLink) },2000) // console.log('res', res) } }) const commonPractices = useMutation({ // FUNCTION TO GET COMMON PRACTICES mutationFn: (fields) => { return getCommonPractice(fields) }, onError: ()=> { setPractices([]) }, onSuccess: (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 uid: localStorage.getItem('uid') // USER UID } commonPractices.mutate(reqData) },[]) return <> {commonPractices?.isFetching ? <>

Loading...

: commonPractices?.isError ?

{commonPractices?.error?.message}

:
{/*

My Product URLs

*/} {/*
*/}
{/*
*/} <>
{/* */}