import {useState} from 'react' import {useDispatch} from 'react-redux' import {useNavigate} from 'react-router-dom' import {useMutation} from '@tanstack/react-query' import {Formik, Form} from 'formik' import * as Yup from "yup"; import {Turnstile} from '@marsidev/react-turnstile' import InputText from '../InputText' import {updateUserDetails} from "../../store/UserDetails"; import {loginUser} from '../../services/siteServices' import RouteLinks from '../../RouteLinks' // import Icons from '../Icons' const initialValues = { username: "", password: "", }; // To get the validation schema const validationSchema = Yup.object().shape({ username: Yup.string().required("username is required").min(6, 'must be upto 6 characters').max(25, 'must not exceed 25 characters'), password: Yup.string().required("password is required").min(6, 'must be upto 6 characters').max(25, 'must not exceed 25 characters'), }); export default function LoginCom() { const dispatch = useDispatch() const navigate = useNavigate() const [loading, setLoading] = useState(false) const [turnstileToken, setTurnstileToken] = useState(null) const login = useMutation({ mutationFn: (fields) => { if (!fields.username || !fields.password) { throw new Error('Please provide all fields marked *') } return loginUser(fields) }, onError: (error) => { console.log(error) }, onSuccess: (res) => { const {jwt_token, user} = res?.data if (jwt_token) { localStorage.setItem('token', jwt_token) dispatch(updateUserDetails({jwt_token, ...user})); } setLoading(false) navigate(RouteLinks.homePage, {state: {proceed: 'true'}}) // later add redux to dispatch state } }) //FUNCTION TO HANDLE LOGIN const handleSubmit = (values) => { if (!turnstileToken) return login.mutate({...values, cf_turnstile_response: turnstileToken}) }; return ( <>
{(props) => (

Sign In

Welcome back, please login to your account

{(props.errors.username && props.touched.username) ? props.errors.username : ''}

{(props.errors.password && props.touched.password) ? props.errors.password : ''}

{/*

Forget password ?

*/}
setTurnstileToken(null)} onError={() => setTurnstileToken(null)} />
{login.error && <>

{login.error.message}

}
MERMS Integrated Support System
)}
) }