import axios from "axios"; import { useState, useContext, useEffect } from "react"; import { useNavigate, Link } from "react-router-dom"; import { AuthContext } from "../context/auth"; import { Box, Typography, TextField, Button, CircularProgress } from "@mui/material"; import { useGlobalInfoStore } from "../context/globalInfo"; import { apiUrl } from "../apiConfig"; import { useTranslation } from 'react-i18next'; import i18n from '../i18n'; import { useThemeMode } from "../context/theme-provider"; const Login = () => { const { t } = useTranslation(); // just don't remove these logs - god knows why it's not working without them console.log(i18n) console.log(t) const [form, setForm] = useState({ email: "", password: "", }); const [loading, setLoading] = useState(false); const { notify } = useGlobalInfoStore(); const { email, password } = form; const { state, dispatch } = useContext(AuthContext); const { user } = state; const { darkMode } = useThemeMode(); const navigate = useNavigate(); useEffect(() => { if (user) { navigate("/"); } }, [user, navigate]); const handleChange = (e: any) => { const { name, value } = e.target; setForm({ ...form, [name]: value }); }; const submitForm = async (e: any) => { e.preventDefault(); if (!email.includes("@")) { notify("error", "Please enter a valid email."); return; } setLoading(true); try { const { data } = await axios.post( `${apiUrl}/auth/login`, { email, password }, { withCredentials: true } ); dispatch({ type: "LOGIN", payload: data }); window.localStorage.setItem("user", JSON.stringify(data)); navigate("/"); } catch (err: any) { const errorResponse = err.response?.data; const errorMessage = errorResponse?.code ? t(errorResponse.code) : t('login.error.generic'); notify("error", errorMessage); setLoading(false); } }; return ( logo {t('login.title')} {t('login.register_prompt')}{" "} {t('login.register_link')} ); }; export default Login;