import React, { useEffect, useState } from 'react' import { useMutation } from '@tanstack/react-query' import { useDispatch, useSelector } from 'react-redux' import { Turnstile } from '@marsidev/react-turnstile' // import LoginImg from '../../assets/bg/login.svg' import { Link, useNavigate } from 'react-router-dom' import siteLinks from '../../links/siteLinks' import { loginUser } from '../../services/services' import { updateUserDetails } from '../../store/UserDetails' import AuthFooter from './AuthFooter' export default function Login() { const { userDetails: { token, room }} = useSelector((state) => state?.userDetails); // CHECKS IF USER Details are avaliable, to determine if user is active let loggedIn = token && room ? true : false; // variable to determine if user is logged in const dispatch = useDispatch() const navigate = useNavigate() const [fields, setFields] = useState({ username: '', password: '', remember: false }) const [turnstileToken, setTurnstileToken] = useState(null) const handleChange = ({target:{name, value}}) => { if(name == 'remember'){ return setFields(prev => ({...prev, remember:!prev.remember})) } setFields(prev => ({...prev, [name]:value})) } const login = useMutation({ mutationFn: ({ turnstileToken, ...fields }) => { if(!fields.username || !fields.password){ throw new Error('Please provide all fields marked *') } rememberMe(fields.remember) delete fields.remember return loginUser({ ...fields, turnstileToken }) }, onError: (error) => { console.log(error) }, onSuccess: (res) => { if(res?.data && res?.data?.error_message){ throw({message: res?.data?.error_message}) } const {token, room, uid} = res?.data if(!token || !room){ throw({message: 'Unable to complete your login, Please try again!'}) } localStorage.setItem('token', token) localStorage.setItem('room', room) localStorage.setItem('uid', uid) dispatch(updateUserDetails({ ...res?.data })); navigate('/dash') // later add redux to dispatch state } }) const rememberMe = (checked) => { if(checked){ localStorage.setItem('username', fields.username) }else{ localStorage.removeItem('username') } } useEffect(()=>{ // NAVIGATES USER TO HOME PAGE IF USER IS CURRENTLY ACTIVE if(loggedIn){ navigate(siteLinks.dash) } },[]) return (

{process.env.REACT_APP_PANEL_NAME}

Welcome back, please login to your account.

setTurnstileToken(null)} onError={() => setTurnstileToken(null)} />
Forgot Password ?
{login.error && <>

{login.error.message}

}

{/*Sign Up*/} if you don't have an account yet.

{/*
*/}
) }