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 ?
:
{(props => { return (
{ profile.data.length ? profile.data.map((item, index) => (
{/* inputs starts here */} {/* username */}
{/* Email */}
{(props.errors.email && props.touched.email) &&

{props.errors.email}

}
{/* first name and last name */}
{(props.errors.firstname && props.touched.firstname) &&

{props.errors.firstname}

}
{(props.errors.lastname && props.touched.lastname) &&

{props.errors.lastname}

}
{/* Country */}
{/* State/Province */}
{(props.errors.state && props.touched.state) &&

{props.errors.state}

}
{/* City */}
{(props.errors.city && props.touched.city) &&

{props.errors.city}

}
{/* Preferred Communication*/}
Email
Phone
{/* Allow Promotions */}
setTogglePromotion(prev => !prev)}>
{/* inputs ends here */}

Update Profile

Profile of at least Size 300x300 . Gifs work too. Max 5mb .

profileImgChangHandler(e)} type="file" className="hidden" />
)) : profile.status ?
No User Information Found!
:
Opps! something went wrong. Try Again Later!
}
{requestStatus.message != '' &&

{requestStatus.message}

}
{" "} Cancel {requestStatus.loading ? : }
) })}
); }