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 { useThemeMode } from "../context/theme-provider"; import { useTranslation } from 'react-i18next'; import i18n from '../i18n'; const Register = () => { const { t } = useTranslation(); 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(); const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!emailRegex.test(email)) { notify("error", "Invalid email format"); return; } setLoading(true); try { const { data } = await axios.post(`${apiUrl}/auth/register`, { email, password }); dispatch({ type: "LOGIN", payload: data }); notify("success", t('register.welcome_notification')); window.localStorage.setItem("user", JSON.stringify(data)); navigate("/"); } catch (error: any) { const errorResponse = error.response?.data; const errorMessage = errorResponse?.code ? t(errorResponse.code) : t('register.error.generic'); notify("error", errorMessage); setLoading(false); } }; return ( logo {t('register.title')} {t('register.register_prompt')}{" "} {t('register.login_link')} ); }; export default Register;