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 {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'), }) const initialValues = { firstname: '', lastname: '', state: '', city: '', email: '' } export default function PersonalInfoTab({ datas, frstNmeHndlr, lstNmeHndlr, dscrphn, profileImg, coverImg, profileImgInput, browseProfileImg, profileImgChangHandler, coverImgInput, browseCoverImg, coverImgChangHandler, }) { const apiCall = new usersService() let navigate = useNavigate() let [togglePromotion, setTogglePromotion] = useState(false) let [profile, setProfile] = useState({ // state for requesting from load profile API data: [], loading: true, status: false }) let [requestStatus, setRequestState] = useState({ // state for requesting from update api message: '', loading: false, status: false }) let [inputs, setInputs] = useState({ // State for input fields firstname: '', lastname: '', state: '', city: '', email: '' }) // const handleChange = ({target:{name, value}}) => { // setInputs(prev => ({...prev, [name]:value})) // } const handleUpdateUser = (values, helpers)=> { setRequestState({message: '', loading: true, status: false}) apiCall.updateProfile(values).then((res)=>{ 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})},1000) }).catch(error => { setRequestState({message: 'Opps! an error occurred. Try Agian', loading: false, status: false}) }) } const loadProfile = ()=>{ // function to load user profile apiCall.loadProfile().then((res)=>{ if(res.data.internal_return < 0){ setProfile(prev => ({...prev, loading: false, status: true})) return } setProfile(prev => ({...prev, data: [res.data], loading: false, status: true})) setInputs({ firstname: res.data.firstname, lastname: res.data.lastname, state: res.data.state, city: res.data.city, email: res.data.email }) }).catch(error =>{ setProfile(prev => ({...prev, loading: false, status: false})) }) } useEffect(()=>{ loadProfile() // loads user profile unto the page },[]) return ( profile.loading ?