import React, { useRef, useState } from 'react' import { Form, Formik } from "formik"; import * as Yup from "yup"; import { Modal } from "bootstrap"; import { useMutation, useQueryClient } from "@tanstack/react-query"; import { updateProfile } from "../../services/services"; import queryKeys from '../../services/queryKeys'; import { useDispatch } from 'react-redux'; import { updateUserDetails } from '../../store/UserDetails' const profileValidationSchema = Yup.object().shape({ firstname: Yup.string().required("firstname is required"), lastname: Yup.string().required("lastname is required"), email: Yup.string().required("email is required"), account_name: Yup.string().required("account name is required"), phone: Yup.string().required("phone is required"), full_address: Yup.string().required("full address is required"), }) export default function ProfileForm({data}) { const dispatch = useDispatch() const modalRef = useRef(null) const queryClient = useQueryClient() const [intialData] = useState(data) const [infoToUpdate, setInfoToUpdate] = useState({}) const dismissModal = () => { const body = document.querySelector('body') body.removeAttribute('style') // body.classList.toggle('modal-open') const modalBackdrop = document.querySelectorAll('.modal-backdrop') modalBackdrop.forEach(item => { if (item) { item.remove(); } }) const modal = Modal.getInstance(modalRef.current); modal && modal.hide(); }; // UPDATE PROFILE MUTATION const updateProfileMutation = useMutation({ mutationFn: (fields) => { return updateProfile(fields) }, onSuccess: (res) => { if(res.data.resultCode != '0'){ throw({message: res?.data?.resultDescription ? res?.data?.resultDescription : 'An error occured'}) } const account_name = res?.data?.personal_data?.account_name dispatch(updateUserDetails({ account_name })); }, onSettled: ()=>{ setTimeout(() => { dismissModal() //CLOSE MODAL HERE queryClient.refetchQueries({ queryKey: [...queryKeys.profile_data], // type: 'active', // exact: true, }) updateProfileMutation.reset() }, 3000); } }) const handleSetInfoToUpdate = (values, helpers) => { delete values.email delete values.country setInfoToUpdate(values) var modal = new Modal(document.getElementById('modal')); modal.show(); } const proceed = () => { let reqData = { token: localStorage.getItem('token'), // USER TOKEN uid: localStorage.getItem('uid'), // USER UID ...infoToUpdate } updateProfileMutation.mutate(reqData) } return ( <> {(props) => { return (
); }}
{/* Vertical Center Modal */} {/* END of Vertical Center Modal */} ) }