// src/components/Login.js import React, { useState } from 'react'; import { Button, TextField, Container, Typography, Alert } from '@mui/material'; import axios from 'axios'; import { useNavigate } from 'react-router-dom'; // Import useNavigate import { PRIMARY_COLOR, SECONDARY_COLOR } from '../App'; export default function Login({ setToken }) { const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const [loginError, setLoginError] = useState(false); // State for login error const navigate = useNavigate(); // Initialize useNavigate const handleLogin = async (e) => { e.preventDefault(); setLoginError(false); // Reset error state on each login attempt try { // eslint-disable-next-line no-template-curly-in-string const response = await axios.post(`${process.env.REACT_APP_API_URL}/api/v1/login`, { username, password }); setToken(response.data.token); navigate('/boxes'); } catch (error) { console.error('Login failed', error); setLoginError(true); // Set error state if login fails } }; return ( Login {/* Display error message if loginError is true */} {loginError && ( Login Failed )}
setUsername(e.target.value)} /> setPassword(e.target.value)} />
); }