From 66cdf50891ee9b703ff6fa1bc4a6e8822fc9e5c3 Mon Sep 17 00:00:00 2001 From: victorAnumudu Date: Tue, 25 Apr 2023 09:26:20 +0100 Subject: [PATCH] Profile update implementation --- .../Settings/Tabs/PersonalInfoTab.jsx | 312 ++++++++++-------- src/services/UsersService.js | 12 + 2 files changed, 189 insertions(+), 135 deletions(-) diff --git a/src/components/Settings/Tabs/PersonalInfoTab.jsx b/src/components/Settings/Tabs/PersonalInfoTab.jsx index 7e79aaa..164ef4e 100644 --- a/src/components/Settings/Tabs/PersonalInfoTab.jsx +++ b/src/components/Settings/Tabs/PersonalInfoTab.jsx @@ -1,6 +1,11 @@ -import React from "react"; +import React, { 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' export default function PersonalInfoTab({ datas, @@ -16,150 +21,181 @@ export default function PersonalInfoTab({ browseCoverImg, coverImgChangHandler, }) { + + const apiCall = new usersService() + let navigate = useNavigate() + + let [togglePromotion, setTogglePromotion] = useState(false) + + let [requestStatus, setRequestState] = useState({ + 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 = ()=> { + setRequestState({message: '', loading: true, status: false}) + + let {firstname, lastname, state, city, email} = inputs + + if(!firstname || !lastname || !state || !city || !email){ + setRequestState({message: 'Please Fill all fields', loading: false, status: false}) + return + } + + //checks if email is a valid email address + let regEx = /^[^0-9][a-zA-Z0-9._%+-]+@[a-zA-Z]+(\.[a-zA-Z]+)+$/; + if (regEx.test(email) == false) { + setRequestState({message: 'Your Email is Invalid', loading: false, status: false}) + return + } + + + apiCall.updateProfile(inputs).then((res)=>{ + if(res.data.internal_return < 0){ + setRequestState({message: 'Profile Was unable to update', loading: false, status: false}) + return + } + setInputs({ + firstname: '', + lastname: '', + state: '', + city: '', + email: '' + }) + // 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}) + }) + } + return (
- {/* first name and last name */} -
-
- -
-
- -
+ {/* inputs starts here */} + {/* username */} +
+ +
- {/* User Name */} -
- + + {/* Email */} +
+ +
- {/* External Links */} -
- + + {/* Fullname */} +
+ +
+ + +
- {/* bio */} -
-

Bio

-
-
-