Compare commits

..

5 Commits

Author SHA1 Message Date
Ebube c45815d437 Made time lesser 2023-04-25 08:44:49 +01:00
Ebube f86ac54e5c everything works! 2023-04-25 08:29:45 +01:00
Ebube 636651aa38 Complete format and api call(70%) 2023-04-24 23:39:40 +01:00
Ebube 32cfed3394 Merge branch 'master' of https://gitlab.chiefsoft.net/WrenchBoard/Users-Wrench into implement-reset-password-pages 2023-04-24 20:56:13 +01:00
Ebube 425df92dba Reset Page Format 2023-04-22 18:44:49 +01:00
8 changed files with 302 additions and 243 deletions
+4
View File
@@ -21,6 +21,10 @@ REACT_APP_SESSION_EXPIRE_MINUTES=300000
REACT_APP_SESSION_EXPIRE_CHECKER=60000 REACT_APP_SESSION_EXPIRE_CHECKER=60000
REACT_APP_LOGIN_ERROR_TIMEOUT=7000 REACT_APP_LOGIN_ERROR_TIMEOUT=7000
REACT_APP_SIGNUP_ERROR_TIMEOUT=7000
# Had to change the error time to 3sec cause it took too long
REACT_APP_RESET_START_ERROR_TIMEOUT=3000
#apigate.lotus.g1.wrenchboard.com:76.209.103.227 #apigate.lotus.g1.wrenchboard.com:76.209.103.227
#apigate.orion.g1.wrenchboard.com:76.209.103.227 #apigate.orion.g1.wrenchboard.com:76.209.103.227
+140 -36
View File
@@ -1,49 +1,153 @@
import React from "react"; import React, { useEffect, useState } from "react";
import { Link } from 'react-router-dom'; import { Link, useNavigate } from 'react-router-dom';
import titleShape from "../../../assets/images/shape/title-shape-two.svg"; import WrenchBoard from "../../../assets/images/wrenchboard.png"
import InputCom from "../../Helpers/Inputs/InputCom"; import InputCom from "../../Helpers/Inputs/InputCom";
import AuthLayout from "../AuthLayout"; import AuthLayout from "../AuthLayout";
import usersService from "../../../services/UsersService";
export default function ForgotPassword() { export default function ForgotPassword() {
const [checked, setValue] = useState(false);
const [resetLoading, setResetLoading] = useState(false)
// email
const [email, setMail] = useState("");
const [msgError, setMsgError] = useState('');
const navigate = useNavigate();
const userApi = new usersService();
const handleEmail = (e) => {
setMail(e?.target.value);
};
const humanChecker = () => {
setValue(!checked);
};
const resetHandler = async () => {
if (email == '') {
setMsgError('An email is required')
} else if (!checked) {
setMsgError('Check if you are human')
}
if (email != '' && checked) {
const reqData = { email }
setResetLoading(true)
try {
const res = await userApi.StartResetPassword(reqData)
if (res.status === 200) {
const { data } = res
if (data.status == -1) {
setMsgError('This is an incorrect or duplicate email')
setResetLoading(false)
} else if (data.status > 0) {
setResetLoading(false)
navigate("/verify-you", { replace: true })
} else{
setMsgError("reset was not successful")
setResetLoading(false)
}
setMail("")
}
} catch (error) {
setResetLoading(false)
setMail("")
setMsgError('An error occurred')
throw new Error(error)
} finally {
setTimeout(() => {
setMsgError(null)
}, process.env.REACT_APP_RESET_START_ERROR_TIMEOUT)
}
}
setTimeout(() => {
setMsgError(null)
}, process.env.REACT_APP_RESET_START_ERROR_TIMEOUT)
}
return ( return (
<> <>
<AuthLayout <AuthLayout
slogan="Welcome to WrenchBoard" slogan="Welcome to WrenchBoard"
> >
<div className="content-wrapper xl:bg-white dark:bg-dark-white xl:px-[70px] w-full sm:w-auto 2xl:px-[100px] h-[818px] rounded-xl "> <div className="w-full">
<div className="flex flex-col justify-center w-full h-full px-5"> <div className='mb-12'>
<div className="title-area flex flex-col justify-center items-center relative text-center mb-7"> <Link to='#'>
<h1 className="sm:text-5xl text-4xl font-bold sm:leading-[74px] text-dark-gray dark:text-white"> <img src={WrenchBoard} alt="wrenchboard" className="h-10 mx-auto" />
Forget Password </Link>
</h1> </div>
<div className="shape sm:w-[377px] w-[270px] -mt-1 ml-0"> <div className="content-wrapper login shadow-md w-full lg:max-w-[500px] mx-auto flex justify-center items-center xl:bg-white dark:bg-dark-white 2xl:w-[828px] rounded-[0.475rem] sm:p-7 p-5">
<img src={titleShape} alt="shape" /> <div className="flex flex-col justify-center w-full h-full px-5">
<div className="title-area flex flex-col justify-center items-center relative text-center mb-7">
<h1 className="text-[#181c32] font-semibold dark:text-white mb-3" style={{
fontSize: 'calc(1rem + .6vw)'
}}>
Forget Password
</h1>
<span className="text-gray-400 font-medium text-xl">Enter your email to reset your password.</span>
</div> </div>
</div> <div className="input-area">
<div className="input-area"> <div className="input-item mb-10">
<div className="input-item mb-5"> <InputCom
<InputCom placeholder="Your Username/Email"
placeholder="example@quomodosoft.com" label="Email"
label="Email Address" name="email"
name="email" type="email"
type="email" value={email}
iconName="message" inputHandler={handleEmail}
/> iconName="message"
</div> />
<div className="signin-area mb-3.5"> </div>
<a {msgError && <div className="relative p-4 text-[#912741] bg-[#fcd9e2] border-[#fbc6d3] mb-4 rounded-[0.475rem] text-md font-light leading-[19.5px]">{msgError}</div>}
href="/verify-you" {/* hCaptha clone for the time being */}
className="w-full rounded-[50px] mb-5 h-[58px] text-xl text-white font-bold flex justify-center bg-purple items-center" <div className="mb-10">
> <div className="w-[303px] h-[78px] mx-auto overflow-hidden">
Send Code <div className="w-[300px] h-[74px] bg-white bottom-[1px] rounded border-gray-100 overflow-hidden cursor-pointer">
</a> {/* Checkbox */}
<div className="h-full relative inline-block">
<div className="relative table top-0 h-full">
<Link to="/" <div className="table-cell align-middle">
className=" my-40 font-bold flex justify-center text-red-500 items-center" <div className="relative w-[30px] h-[30px] mx-[15px]">
> <input type="checkbox" name="human-checkbox" id="human-checkbox" className="w-[28px] h-[28px] border-[1px] rounded border-gray-400 checked:bg-white" onClick={humanChecker} />
Back to Home </div>
</Link> </div>
</div>
</div>
<div className="h-full relative inline-block w-[170px]">
<label className="relative table top-0 h-full">
<label className="table-cell align-middle">
<label className="text-800 text-sm" htmlFor="human-checkbox">
I am human
</label>
</label>
</label>
</div>
<div className="h-full relative inline-block w-16"></div>
</div>
</div>
</div>
<div className="signin-area mb-3.5">
<div className="flex justify-center items-center gap-2">
<button
type="button"
onClick={resetHandler}
className={`rounded-[0.475rem] mb-6 text-[1.15rem] font-semibold text-white flex justify-center bg-[#4687ba] hover:bg-[#009ef7] transition-all duration-300 items-center py-[0.8875rem] px-[1.81rem]`}
>
{resetLoading ? (
<div className="signup btn-loader"></div>
) : (
<span>Send Code</span>
)}
</button>
<button
type="button"
onClick={() => navigate("/login")}
className={`rounded-[0.475rem] mb-6 text-[1.15rem] font-semibold text-[#009ef7] hover:text-white flex justify-center bg-[#f1faff] hover:bg-[#009ef7] transition-all duration-300 items-center py-[0.8875rem] px-[1.8125rem] `}
>
Cancel
</button>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
+1 -5
View File
@@ -4,8 +4,6 @@ import { toast } from "react-toastify";
import googleLogo from "../../../assets/images/google-logo.svg"; import googleLogo from "../../../assets/images/google-logo.svg";
import appleLogo from "../../../assets/images/apple-black.svg"; import appleLogo from "../../../assets/images/apple-black.svg";
import facebookLogo from "../../../assets/images/facebook-4.svg"; import facebookLogo from "../../../assets/images/facebook-4.svg";
// import titleShape from "../../../assets/images/shape/title-shape.svg";
import titleShape from "../../../assets/images/shape/login_straight_underline.svg";
import WrenchBoard from "../../../assets/images/wrenchboard.png" import WrenchBoard from "../../../assets/images/wrenchboard.png"
import usersService from "../../../services/UsersService"; import usersService from "../../../services/UsersService";
import InputCom from "../../Helpers/Inputs/InputCom"; import InputCom from "../../Helpers/Inputs/InputCom";
@@ -24,8 +22,6 @@ export default function Login() {
setValue(!checked); setValue(!checked);
}; };
console.log(process.env.REACT_APP_LOGIN_ERROR_TIMEOUT)
// email // email
const [email, setMail] = useState(""); const [email, setMail] = useState("");
const handleEmail = (e) => { const handleEmail = (e) => {
@@ -168,7 +164,7 @@ export default function Login() {
Forgot Password Forgot Password
</a> </a>
</div> */} </div> */}
{loginError && <div className="relative p-4 text-[#912741] bg-[#fcd9e2] border-[#fbc6d3] mb-4 rounded-[0.475rem] text-md font-light leading-[19.5px]">Invalid username or password- Please <Link to='/#' className='text-[#009ef7]'>reset your password</Link> or <Link to='/signup' className='text-[#009ef7]'>create a new account</Link></div>} {loginError && <div className="relative p-4 text-[#912741] bg-[#fcd9e2] border-[#fbc6d3] mb-4 rounded-[0.475rem] text-md font-thin leading-[19.5px]">Invalid username or password- Please <Link to='/#' className='text-[#009ef7]'>reset your password</Link> or <Link to='/signup' className='text-[#009ef7]'>create a new account</Link></div>}
{msgError && <div className="relative p-4 text-[#912741] bg-[#fcd9e2] border-[#fbc6d3] mb-4 rounded-[0.475rem] text-md font-light leading-[19.5px]">{msgError}</div>} {msgError && <div className="relative p-4 text-[#912741] bg-[#fcd9e2] border-[#fbc6d3] mb-4 rounded-[0.475rem] text-md font-light leading-[19.5px]">{msgError}</div>}
<div className="signin-area mb-3.5"> <div className="signin-area mb-3.5">
<div className="flex justify-center"> <div className="flex justify-center">
+10 -4
View File
@@ -29,14 +29,15 @@ export default function SignUp() {
// To Show and Hide Password // To Show and Hide Password
const togglePasswordVisibility = () => { const togglePasswordVisibility = () => {
setShowPassword(!showPassword); setShowPassword(!showPassword);
// return console.log('showPassword')
}; };
const rememberMe = () => { const rememberMe = () => {
setValue(!checked); setValue(!checked);
}; };
const navigate = useNavigate(); const navigate = useNavigate();
const userApi = new usersService(); const userApi = new usersService();
// Get Country Api // Get Country Api
const getCountryList = async () => { const getCountryList = async () => {
const res = await userApi.getSignupCountryData() const res = await userApi.getSignupCountryData()
@@ -74,27 +75,32 @@ export default function SignUp() {
} }
const res = await userApi.CreateUser(reqData) const res = await userApi.CreateUser(reqData)
setSignUpLoading(true)
if (res.status === 200) { if (res.status === 200) {
const { data } = res const { data } = res
if (data.status == -1 && data.acc == 'DULPICATE') { if (data.status == -1 && data.acc == 'DULPICATE') {
setMsgError('This account has been already created') setMsgError('This account has been already created')
setSignUpLoading(false)
} }
if (data.status > 0 && data.internal_return == 100 && data.session != '') { if (data.status > 0 && data.internal_return == 100 && data.session != '') {
localStorage.setItem("email", `${data.email}`); localStorage.setItem("email", `${data.email}`);
localStorage.setItem("country", `${data.country}`); localStorage.setItem("country", `${data.country}`);
localStorage.setItem("firstname", `${data.firstname}`); localStorage.setItem("firstname", `${data.firstname}`);
localStorage.setItem("lastname", `${data.lastname}`); localStorage.setItem("lastname", `${data.lastname}`);
setSignUpLoading(true)
setTimeout(() => { setTimeout(() => {
navigate("/", { replace: true }); navigate("/", { replace: true });
setSignUpLoading(false) setSignUpLoading(false)
}, 2000) }, 2000)
console.log('Success')
} else { } else {
setMsgError(data.status) setMsgError(data.status)
setSignUpLoading(false)
} }
} }
} else {
setMsgError('This account does not exist')
setSignUpLoading(false)
} }
} catch (error) { } catch (error) {
throw new Error(error) throw new Error(error)
@@ -102,7 +108,7 @@ export default function SignUp() {
} finally { } finally {
setTimeout(() => { setTimeout(() => {
setMsgError(null) setMsgError(null)
}, 7000) }, process.env.REACT_APP_SIGNUP_ERROR_TIMEOUT)
} }
} }
@@ -25,7 +25,7 @@ export default function InputCom({
{label} {label}
</label> </label>
)} )}
{forgotPassword && <Link href="/forgot-password" className="text-base text-[#4687ba] hover:text-[#009ef7]">Forgot Password?</Link>} {forgotPassword && <Link to="/forgot-password" className="text-base text-[#4687ba] hover:text-[#009ef7]">Forgot Password?</Link>}
</div> </div>
<div className="input-wrapper border border-[#f5f8fa]] dark:border-[#5e6278] w-full rounded-[0.475rem] h-[42px] overflow-hidden relative font-medium leading-6 bg-clip-padding text-[#5e6278] dark:text-gray-100 bg-[#f5f8fa] dark:bg-[#5e6278] text-base "> <div className="input-wrapper border border-[#f5f8fa]] dark:border-[#5e6278] w-full rounded-[0.475rem] h-[42px] overflow-hidden relative font-medium leading-6 bg-clip-padding text-[#5e6278] dark:text-gray-100 bg-[#f5f8fa] dark:bg-[#5e6278] text-base ">
<input <input
+137 -179
View File
@@ -1,11 +1,6 @@
import React, { useState } from "react"; import React from "react";
import Icons from "../../Helpers/Icons"; import Icons from "../../Helpers/Icons";
import InputCom from "../../Helpers/Inputs/InputCom"; 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({ export default function PersonalInfoTab({
datas, datas,
@@ -21,181 +16,150 @@ export default function PersonalInfoTab({
browseCoverImg, browseCoverImg,
coverImgChangHandler, 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 ( return (
<div className="personal-info-tab w-full flex flex-col justify-between"> <div className="personal-info-tab w-full flex flex-col justify-between">
<div className="flex flex-col-reverse sm:flex-row"> <div className="flex flex-col-reverse sm:flex-row">
<div className="flex-1 sm:mr-10"> <div className="flex-1 sm:mr-10">
<div className="fields w-full"> <div className="fields w-full">
{/* inputs starts here */} {/* first name and last name */}
{/* username */} <div className="xl:flex xl:space-x-7 mb-6">
<div className='profile-input my-3'> <div className="field w-full mb-6 xl:mb-0">
<label className='w-full text-slate-600 text-lg'>Username <span className='text-red-500'>*</span></label> <InputCom
<input className='w-full p-3 text-lg text-slate-500 bg-slate-200 opacity-90 rounded-md outline-0 placeholder:text-slate-500 placeholder:text-lg' label="First Name"
value={'username@gamil.com'} type="text"
name='username' name="firstName"
type="text" placeholder="First Name Here"
placeholder='username@gamil.com' value={datas}
disabled inputHandler={frstNmeHndlr}
/> />
</div>
<div className="field w-full">
<InputCom
label="Last Name"
type="text"
name="lastName"
placeholder="Last Name Here"
value={datas}
inputHandler={lstNmeHndlr}
/>
</div>
</div> </div>
{/* User Name */}
{/* Email */} <div className="field w-full mb-6">
<div className='profile-input my-3'> <InputCom
<label className='w-full text-slate-600 text-lg'>Email <span className='text-red-500'>*</span></label> label="User Name"
<input className='w-full p-3 text-lg text-slate-500 bg-slate-200 opacity-90 rounded-md outline-0 placeholder:text-slate-500 placeholder:text-lg' type="text"
value={inputs.email} name="userName"
name='email' placeholder="@example"
type="text" value={datas}
placeholder='Firstname' inputHandler={lstNmeHndlr}
onChange={handleChange} />
/>
</div> </div>
{/* External Links */}
{/* Fullname */} <div className="field w-full mb-6">
<div className='profile-input my-3'> <InputCom
<label className='w-full text-slate-600 text-lg'>Fullname <span className='text-red-500'>*</span></label> label="External Links"
<div className="w-full flex items-center justify-center space-x-1 space-y-1"> type="text"
<input className='p-3 text-lg text-slate-500 bg-slate-100 rounded-md outline-0 placeholder:text-slate-500 placeholder:text-lg' name="link"
value={inputs.firstname} placeholder="https:yoursite.lo/imte/item_name123"
name='firstname' value={datas}
type="text" inputHandler={lstNmeHndlr}
placeholder='Firstname' />
onChange={handleChange}
/>
<input className='p-3 text-lg text-slate-500 bg-slate-100 rounded-md outline-0 placeholder:text-slate-500 placeholder:text-lg'
value={inputs.lastname}
name='lastname'
type="text"
placeholder='Lastname'
onChange={handleChange}
/>
</div>
</div> </div>
{/* bio */}
{/* Country */} <div className="field w-full mb-6">
<div className='profile-input my-3'> <h1 className="field-title">Bio </h1>
<label className='w-full text-slate-600 text-lg'>Country <span className='text-red-500'>*</span></label> <div className="input-field mt-2">
<input className='w-full p-3 text-lg text-slate-500 bg-slate-200 opacity-90 rounded-md outline-0 placeholder:text-slate-500 placeholder:text-lg' <div className="input-wrapper w-full ">
value='Nigeria' <textarea
name='country' value={datas}
type="text" onChange={(e) => dscrphn(e)}
disabled placeholder="provide a detailed description of your item."
rows="7"
className="w-full h-full px-7 py-4 border border-light-purple dark:border-[#5356fb29] rounded-[20px] text-dark-gray dark:text-white bg-[#FAFAFA] dark:bg-[#11131F] focus:ring-0 focus:outline-none"
/> />
</div>
{/* State/Province */}
<div className='profile-input my-3'>
<label className='w-full text-slate-600 text-lg'>State/Province <span className='text-red-500'>*</span></label>
<input className='w-full p-3 text-lg text-slate-500 bg-slate-100 rounded-md outline-0 placeholder:text-slate-500 placeholder:text-lg'
value={inputs.state}
name='state'
type="text"
placeholder='State'
onChange={handleChange}
/>
</div>
{/* City */}
<div className='profile-input my-3'>
<label className='w-full text-slate-600 text-lg'>City <span className='text-red-500'>*</span></label>
<input className='w-full p-3 text-lg text-slate-500 bg-slate-100 rounded-md outline-0 placeholder:text-slate-500 placeholder:text-lg'
value={inputs.city}
name='city'
type="text"
placeholder='City'
onChange={handleChange}
/>
</div>
{/* Preferred Communication*/}
<div className='profile-input my-3'>
<label className='text-slate-600 text-lg'>Pref. Communication <span className='text-red-500'>*</span></label>
<div className="check-box">
<div className="flex items-center justify-start">
<div className="check-input flex items-center">
<input className="mx-2 w-4 h-4 cursor-pointer" type="checkbox" name="prefcomm1" id="" />
<span className="text-slate-600 text-lg">Email</span>
</div>
<div className="check-input flex items-center">
<input className="mx-2 w-4 h-4 cursor-pointer" type="checkbox" name="prefcomm2" id="" />
<span className="text-slate-600 text-lg">Phone</span>
</div>
</div>
</div> </div>
</div>
</div> </div>
{/* email */}
{/* Allow Promotions */} <div className="field w-full mb-6">
<div className='profile-input my-3 flex items-center space-x-4'> <InputCom
<label className='text-slate-600 text-lg'>Allow Promotions</label> label="Email"
<div className="cursor-pointer flex items-center" onClick={()=>setTogglePromotion(prev => !prev)}> type="email"
<div className={`h-6 w-8 mr-1 p-1 ${togglePromotion ? 'bg-sky-blue flex justify-end items-center': 'bg-slate-200'} rounded-full transition`}> name="email"
<div className="w-4 h-full bg-white rounded-full"></div> placeholder="https:yoursite.lo/imte/item_name123"
value={datas}
inputHandler={lstNmeHndlr}
/>
<p className="text-thin-light-gray text-sm tracking-wide mt-3">
Your email for marketplace notifications
</p>
</div>
</div>
{/* border line */}
<div className="w-full h-[1px] bg-[#E3E4FE] dark:bg-[#a7a9b533] mb-6"></div>
<div className="social-connetion w-full">
<div className="mb-6">
{/* headings */}
<div className="mb-4">
<h1 className="text-xl text-dark-gray dark:text-white tracking-wide font-bold mb-1.5">
Social Connections
</h1>
<p className="text-sm tracking-wide text-thin-light-gray">
Help collectors verify your account by connecting Twitter
</p>
</div>
<div className="flex justify-between items-center ">
<div className="flex space-x-2.5 items-center">
<div className="w-[44px] h-[44px] rounded-full bg-[#E0F2FD] flex justify-center items-center">
<span>
<svg
width="23"
height="19"
viewBox="0 0 23 19"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M0 17.0066C2.46188 17.0803 4.69827 16.4768 6.78777 14.9218C4.65896 14.6476 3.19321 13.6316 2.38327 11.5697C3.08253 11.5697 3.68869 11.5697 4.29588 11.5697C2.09881 10.6971 0.869935 9.1764 0.703396 6.7914C1.37576 6.9763 1.99951 7.14666 2.62222 7.31805C0.666157 5.02758 0.227569 2.9085 1.41507 0.9307C4.01246 3.90364 7.22015 5.64253 11.155 5.89391C11.155 5.44101 11.1405 5.04628 11.1571 4.65259C11.2409 2.67998 12.208 1.25376 13.9686 0.46118C15.6847 -0.31166 17.3821 -0.119489 18.8665 1.08548C19.3403 1.47086 19.7509 1.5311 20.2702 1.3192C20.9519 1.04081 21.6367 0.77177 22.3866 0.471567C22.0546 1.52383 21.3605 2.23746 20.6519 3.0103C21.3998 2.80774 22.1476 2.60622 22.8955 2.40367C22.9307 2.43483 22.9659 2.46599 23.001 2.49715C22.4218 3.10587 21.8818 3.76029 21.2498 4.30564C20.8691 4.63389 20.7191 4.95798 20.7067 5.44101C20.6074 9.13796 19.3444 12.3727 16.7698 15.0361C14.2769 17.6143 11.2109 18.8836 7.62874 18.9917C4.97239 19.0716 2.5105 18.4775 0.217225 17.1458C0.141714 17.1032 0.071374 17.0533 0 17.0066Z"
fill="#33AAF2"
/>
</svg>
</span>
</div> </div>
<p className="text-18 dark:text-white tracking-wide">
Twitter
</p>
</div> </div>
<div>
<p className="text-18 tracking-wide text-[#33AAF2] border-b dark:border-[#5356fb29] border-[#33AAF2]">
Cannect
</p>
</div>
</div>
</div>
<div className="mb-10">
{/* headings */}
<div className="sm:flex justify-between items-center mb-4">
<div className="mr-16 mb-5 sm:mb-0">
<h1 className="text-xl text-dark-gray dark:text-white tracking-wide font-bold mb-1.5">
Verification
</h1>
<p className="text-sm tracking-wide text-thin-light-gray leading-7">
Proceed with verification process to get more visibility and
gain trust on NFTMAX Marketplace.
</p>
</div>
<div>
<a
href="#"
className="w-[136px] h-[46px] flex justify-center items-center text-18 tracking-wide rounded-full text-white bg-light-green hover:bg-green-600 transition duration-300 ease-in-out"
>
Get Verified
</a>
</div>
</div>
</div> </div>
{/* inputs ends here */}
</div> </div>
</div> </div>
<div className="w-[232px] mb-10"> <div className="w-[232px] mb-10">
@@ -308,30 +272,24 @@ export default function PersonalInfoTab({
</div> </div>
</div> </div>
<div className="content-footer w-full"> <div className="content-footer w-full">
{requestStatus.message != '' && <p className={`text-center text-base ${requestStatus.status ? 'text-green-800' : 'text-red-600'}`}>{requestStatus.message}</p>}
<div className="w-full h-[120px] border-t border-light-purple dark:border-[#5356fb29] flex justify-end items-center"> <div className="w-full h-[120px] border-t border-light-purple dark:border-[#5356fb29] flex justify-end items-center">
<div className="flex items-center space-x-4 mr-9"> <div className="flex space-x-4 mr-9">
<Link <button
to='/' type="button"
className="text-18 text-light-red tracking-wide " className="text-18 text-light-red tracking-wide "
> >
<span className="border-b dark:border-[#5356fb29] border-light-red"> <span className="border-b dark:border-[#5356fb29] border-light-red">
{" "} {" "}
Cancel Cancel
</span> </span>
</Link> </button>
{requestStatus.loading ?
<LoadingSpinner size='8' color='sky-blue' />
:
<button <button
type="button" type="button"
className="w-[152px] h-[46px] flex justify-center items-center btn-gradient text-base rounded-full text-white" className="w-[152px] h-[46px] flex justify-center items-center btn-gradient text-base rounded-full text-white"
onClick={handleUpdateUser}
> >
Upadate Profile Upadate Profile
</button> </button>
}
</div> </div>
</div> </div>
</div> </div>
-1
View File
@@ -8,7 +8,6 @@ const AuthRoute = ({ redirectPath = "/login", children }) => {
const navigate = useNavigate(); const navigate = useNavigate();
const { pathname } = useLocation(); const { pathname } = useLocation();
//Removing Data stored at localStorage after session expires //Removing Data stored at localStorage after session expires
const expireSession = () => { const expireSession = () => {
localStorage.removeItem("email"); localStorage.removeItem("email");
+9 -17
View File
@@ -6,6 +6,11 @@ class usersService {
console.log("WRB Service Entry"); console.log("WRB Service Entry");
} }
CreateUser(reqData){
localStorage.setItem("session_token", ``);
return this.postAuxEnd("/createuser", reqData);
}
getHomeDate(){ getHomeDate(){
var postData = { var postData = {
uuid: localStorage.getItem("uuid"), uuid: localStorage.getItem("uuid"),
@@ -48,11 +53,6 @@ class usersService {
return this.postAuxEnd("/apigate", null); return this.postAuxEnd("/apigate", null);
} }
CreateUser(reqData){
localStorage.setItem("session_token", ``);
return this.postAuxEnd("/createuser", reqData);
}
getLoadProfile(){ getLoadProfile(){
var postData = { var postData = {
uuid: localStorage.getItem("uid"), uuid: localStorage.getItem("uid"),
@@ -216,23 +216,15 @@ class usersService {
return this.postAuxEnd("/refferhx", postData); return this.postAuxEnd("/refferhx", postData);
} }
//END POINT CALL FOR UPDATE PROFILE
updateProfile(post){
var postData = {
uid: localStorage.getItem("uid"),
member_id: localStorage.getItem("member_id"),
sessionid: localStorage.getItem("session_token"),
action: 5031,
...post
};
return this.postAuxEnd("/updateprofile", postData);
}
//END POINT CALL FOR SENDING REFERRAL MESSAGE //END POINT CALL FOR SENDING REFERRAL MESSAGE
sendReferralMsg(postData){ sendReferralMsg(postData){
return this.postAuxEnd("/sendreferral", postData); return this.postAuxEnd("/sendreferral", postData);
} }
StartResetPassword(reqData){
return this.postAuxEnd("/startresetpasword", reqData)
}
getCouponRedeem(){ getCouponRedeem(){
var postData = { var postData = {
uuid: localStorage.getItem("uid"), uuid: localStorage.getItem("uid"),