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 * 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().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").matches( /^[a-zA-Z0-9]+$/, // Regex for alphanumeric characters 'Must contain only alphanumeric characters' // Custom error message ), }) export default function ProfileCompleteCom() { const dispatch = useDispatch() const navigate = useNavigate() const {state: {redirectLink}} = useLocation() const [practices, setPractices] = useState([]) const [specialties, setSpecialties] = useState([]) const [initialValues, setInitialValues] = useState({ practice: '', specialization: '', introduction: '', url_name: '' }) const handleUpdateSpecialties = (e) => { setInitialValues(prev => ({...prev, specialization: ''})) const specialtiesArr = practices.filter(item => item.practice == e.target.value)[0]?.specialties setSpecialties(specialtiesArr) } const mutation = useMutation({ mutationFn: (fields) => { const {practice, specialization, url_name} = fields if (!practice || !specialization || !url_name) { throw new Error('Please Select both Practice, Specialization and Enter URL_Name') } 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 handleCompleteProfile = (values) => { // FUNCTION TO COMPLETE PROFILE let reqData = { token: localStorage.getItem('token'), // USER TOKEN uid: localStorage.getItem('uid'), // USER UID ...values } 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

*/} {/*
*/}
{/*
*/} {(props) => { return (
<>
{/* */}