import React, { useEffect, useState } from "react"; import Icons from "../../Helpers/Icons"; import InputCom from "../../Helpers/Inputs/InputCom"; import {Link, useNavigate} from 'react-router-dom' import usersService from "../../../services/UsersService"; import LoadingSpinner from "../../Spinners/LoadingSpinner"; import { useSelector } from "react-redux"; import {toast} from 'react-toastify' import {Formik, Form} from 'formik' import * as Yup from 'yup' const validationSchema = Yup.object().shape({ email: Yup.string() .email('Wrong email format') .min(3, 'Minimum 3 characters') .max(50, 'Maximum 50 characters') .required('Email is required'), firstname: Yup.string() .min(3, 'Minimum 3 characters') .max(25, 'Maximum 25 characters') .required('Firstname is required'), lastname: Yup.string() .min(3, 'Minimum 3 characters') .max(25, 'Maximum 25 characters') .required('Lastname is required'), city: Yup.string() .min(3, 'Minimum 3 characters') .max(25, 'Maximum 25 characters') .required('City is required'), state: Yup.string() .min(3, 'Minimum 3 characters') .max(25, 'Maximum 25 characters') .required('State is required'), }) export default function PersonalInfoTab({ datas, frstNmeHndlr, lstNmeHndlr, dscrphn, profileImg, coverImg, profileImgInput, browseProfileImg, profileImgChangHandler, coverImgInput, browseCoverImg, coverImgChangHandler, }) { let {userDetails} = useSelector((state) => state.userDetails) const apiCall = new usersService() let navigate = useNavigate() let [togglePromotion, setTogglePromotion] = useState(false) const initialValues = { firstname: userDetails?.firstname, lastname: userDetails?.lastname, state: userDetails?.state, city: userDetails?.city, email: userDetails?.email } let [profile, setProfile] = useState({ // state for requesting from load profile API loading: true, status: false }) let [requestStatus, setRequestState] = useState({ // state for requesting from update api message: '', loading: false, status: false }) const handleUpdateUser = (values, helpers)=> { setRequestState({message: '', loading: true, status: false}) apiCall.updateProfile(values).then((res)=>{ // API CALL TO UPDATE USER DETAILS if(res.data.internal_return < 0){ setRequestState({message: 'Profile Was unable to update', loading: false, status: false}) return } // setRequestState({message: 'Profile update successfully', loading: false, status: true}) toast.success("Update Successful"); setTimeout(()=>{ navigate('/',{replace:true}) window.location.reload(true) },1000) }).catch(error => { setRequestState({message: 'Opps! an error occurred. Try Agian', loading: false, status: false}) }) } useEffect(()=>{ setProfile({loading: false, status: true}) },[]) return ( profile.loading ?