import { useState } from "react"; import { Link, useNavigate } from "react-router-dom"; import { toast } from "react-toastify"; import axiosInstance, { scheduleTokenRefresh } from "../api/axiosInstance"; import { useAuth } from "../context/authContext"; import type { User } from "../utils/types"; const Login = () => { const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const [error, setError] = useState(null); const { setUser } = useAuth(); const navigate = useNavigate(); const handleLogin = async (e: React.FormEvent) => { e.preventDefault(); try { const response = await axiosInstance.post<{ user: User; tokenExpiresIn: number; }>("/auth/login", { username, password }); scheduleTokenRefresh(response.data.tokenExpiresIn); setUser(response.data.user); navigate("/"); toast.success("Login successful!"); } catch (error: any) { const errorMessage = error.response?.data?.error || "Login failed. Please check your credentials."; setError(`Login failed: ${errorMessage}`); } }; return (

Welcome Back

Log in to continue to FinkWave

{error && (

{error}

)}
setUsername(e.target.value)} />
setPassword(e.target.value)} />

Don't have an account?{" "} Sign up

); }; export default Login;