Error checking in register component, redirect to login if success

This commit is contained in:
Imbus 2024-03-17 22:48:38 +01:00
parent 40caa2d158
commit e012b6ff12
2 changed files with 27 additions and 8 deletions

View file

@ -37,13 +37,19 @@ export const api: API = {
}); });
if (!response.ok) { if (!response.ok) {
return { success: false, message: "Failed to register user" }; return {
success: false,
message: "Failed to register user: " + response.status,
};
} else { } else {
const data = (await response.json()) as User; // const data = (await response.json()) as User; // The API does not currently return the user
return { success: true, data }; return { success: true };
} }
} catch (e) { } catch (e) {
return { success: false, message: "Failed to register user" }; return {
success: false,
message: "Unknown error while registering user",
};
} }
}, },

View file

@ -3,14 +3,26 @@ import { NewUser } from "../Types/Users";
import { api } from "../API/API"; import { api } from "../API/API";
import Logo from "../assets/Logo.svg"; import Logo from "../assets/Logo.svg";
import Button from "./Button"; import Button from "./Button";
import { useNavigate } from "react-router-dom";
export default function Register(): JSX.Element { export default function Register(): JSX.Element {
const [username, setUsername] = useState(""); const [username, setUsername] = useState<string>();
const [password, setPassword] = useState(""); const [password, setPassword] = useState<string>();
const [errMessage, setErrMessage] = useState<string>();
const nav = useNavigate();
const handleRegister = async (): Promise<void> => { const handleRegister = async (): Promise<void> => {
const newUser: NewUser = { userName: username, password }; const newUser: NewUser = {
await api.registerUser(newUser); // TODO: Handle errors userName: username ?? "",
password: password ?? "",
};
const response = await api.registerUser(newUser);
if (response.success) {
nav("/"); // Instantly navigate to the login page
} else {
setErrMessage(response.message ?? "Unknown error");
}
}; };
return ( return (
@ -67,6 +79,7 @@ export default function Register(): JSX.Element {
}} }}
/> />
</div> </div>
{errMessage && <p className="text-red-500 text-xs">{errMessage}</p>}
<div className="flex items-center justify-between"> <div className="flex items-center justify-between">
<Button <Button
text="Register" text="Register"