import { useState, useContext, useEffect } from "react"; import { useNavigate, Link } from "react-router-dom"; import axios from "axios"; import { AuthContext } from "../context/auth"; import { TextField, Button, CircularProgress, Typography, Box, Container, } from "@mui/material"; import { useGlobalInfoStore } from "../context/globalInfo"; import { apiUrl } from "../apiConfig"; const Register = () => { 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 navigate = useNavigate(); useEffect(() => { if (user !== null) navigate("/"); }, [user, navigate]); const handleChange = (e: any) => { const { name, value } = e.target; setForm({ ...form, [name]: value }); }; const submitForm = async (e: any) => { e.preventDefault(); setLoading(true); try { const { data } = await axios.post(`${apiUrl}/auth/register`, { email, password, }); dispatch({ type: "LOGIN", payload: data, }); notify("success", "Welcome to Maxun!"); window.localStorage.setItem("user", JSON.stringify(data)); navigate("/"); } catch (err: any) { notify( "error", err.response.data || "Registration Failed. Please try again." ); } finally { setLoading(false); } }; return ( Create an account Already have an account?{" "} Login ); }; export default Register;