diff --git a/client/src/components/AuthForm.tsx b/client/src/components/AuthForm.tsx index feeec0f..b34448e 100644 --- a/client/src/components/AuthForm.tsx +++ b/client/src/components/AuthForm.tsx @@ -31,21 +31,34 @@ const AuthForm: React.FC = () => { const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const [isLogin, setIsLogin] = useState(true); - - //added const [showPassword, setShowPassword] = useState(false); + const [loading, setLoading] = useState(false); + const [errorMessage, setErrorMessage] = useState(""); + const [login] = useMutation(LOGIN); const [register] = useMutation(REGISTER); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); + if (!username || !password) { + setErrorMessage("Please enter both username and password."); + return; + } + + setLoading(true); + setErrorMessage(""); + try { const mutation = isLogin ? login : register; const result = await mutation({ variables: { username, password } }); const data = isLogin ? result.data.login : result.data.register; + if (!data?.token) { + throw new Error("No token returned."); + } + localStorage.setItem("username", data.user.username); localStorage.setItem("token", data.token); setToken(data.token); @@ -54,7 +67,16 @@ const AuthForm: React.FC = () => { setPassword(""); } catch (error: any) { console.error("Auth error:", error.message); - alert("Authentication failed."); + + if (error.message.toLowerCase().includes("user")) { + setErrorMessage("User not found. Please register first."); + } else if (error.message.toLowerCase().includes("already exists")) { + setErrorMessage("User already exists. Try logging in instead."); + } else { + setErrorMessage("Something went wrong. Please try again."); + } + } finally { + setLoading(false); } }; @@ -62,7 +84,6 @@ const AuthForm: React.FC = () => {