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 <>
Loading...
{commonPractices?.error?.message}