import React, { useState, useEffect, useRef, FormEvent, ChangeEvent } from 'react' import { useDispatch } from 'react-redux'; import { useNavigate } from 'react-router-dom' import { setUserSlice } from '../store/userSlice'; import DocVaLogoLight from '../../assets/logo-colored-vertical.svg' import DocVaLogoDark from '../../assets/logo-white-vertical.svg' import { useTheme } from '../helper/ThemeToggle'; import { Eye, EyeOff, KeyRound, Mail } from 'lucide-react'; const Login = () => { const { theme, setTheme } = useTheme(); const inputRef = useRef(null) const navigate = useNavigate() const dispatch = useDispatch(); const [errorMessage, setErrorMessage] = useState("") const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [isForgotMode, setIsForgotMode] = useState(false); const [loading, setLoading] = useState(false); const [showPassword, setShowPassword] = useState(false); useEffect(() => { document.documentElement.setAttribute("data-theme", theme); }, [theme]); const logo = theme === "dark" ? DocVaLogoDark : DocVaLogoLight; const handleLogin = async (e: FormEvent | KeyboardEvent) => { e.preventDefault() if (email === "" || password === "") return setLoading(true); try { const response = await window.electron.login({ email, password }); console.log(response) if (response.success) { // setUser(response.user); dispatch(setUserSlice({ id: response.user.id, name: response.user.name, email: response.user.email, })); navigate("/") } else if (response.success == false) { console.log(response.error.message) setErrorMessage(response.error.message) } } catch (error) { console.log(error) } finally { setLoading(false); } } const handleForgotPassword = async (e: FormEvent | KeyboardEvent) => { e.preventDefault(); setLoading(true); try { const res = await window.electron.forgotPassword(email); console.log("Forgot password response:", res); alert("Password reset link sent to your email"); setIsForgotMode(false); } catch (error) { console.error("Forgot password error:", error); } finally { setLoading(false); } }; // Detect Enter key press useEffect(() => { const handleEnter = (e: KeyboardEvent) => { if (e.key === 'Enter') { if (!isForgotMode) { handleLogin(e) } else { handleForgotPassword(e) } } } const inputElement = inputRef.current inputElement?.addEventListener('keydown', handleEnter) return () => inputElement?.removeEventListener('keydown', handleEnter) }, [email, password]) return ( <>
{/*
*/} {/*
*/}

Welcome Back

Sign in to Employee Tracker

{!isForgotMode && (
)}
{isForgotMode ? ( ) : ( )}
{errorMessage && {errorMessage}...!}
) } export default Login