From 88e23907c4954b4cbf0f8290df2c49af8c0be3dc Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Thu, 27 Apr 2023 17:43:15 +0200 Subject: [PATCH] loading spinner --- apps/login/ui/RegisterForm.tsx | 8 ++++++++ apps/login/ui/Spinner.tsx | 22 ++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 apps/login/ui/Spinner.tsx diff --git a/apps/login/ui/RegisterForm.tsx b/apps/login/ui/RegisterForm.tsx index 8a499780d3e..a92724a6e0f 100644 --- a/apps/login/ui/RegisterForm.tsx +++ b/apps/login/ui/RegisterForm.tsx @@ -14,6 +14,7 @@ import { upperCaseValidator, } from "#/utils/validators"; import { useRouter } from "next/navigation"; +import { Spinner } from "./Spinner"; type Inputs = | { @@ -38,9 +39,12 @@ export default function RegisterForm({ mode: "onBlur", }); + const [loading, setLoading] = useState(false); + const router = useRouter(); async function submitRegister(values: Inputs) { + setLoading(true); const res = await fetch("/registeruser", { method: "POST", headers: { @@ -55,9 +59,11 @@ export default function RegisterForm({ }); if (!res.ok) { + setLoading(false); throw new Error("Failed to register user"); } + setLoading(false); return res.json(); } @@ -172,6 +178,7 @@ export default function RegisterForm({ type="submit" variant={ButtonVariants.Primary} disabled={ + loading || !policyIsValid || !formState.isValid || !tosAndPolicyAccepted || @@ -179,6 +186,7 @@ export default function RegisterForm({ } onClick={handleSubmit(submitAndLink)} > + {loading && } continue diff --git a/apps/login/ui/Spinner.tsx b/apps/login/ui/Spinner.tsx new file mode 100644 index 00000000000..5ed2f04c80d --- /dev/null +++ b/apps/login/ui/Spinner.tsx @@ -0,0 +1,22 @@ +import { FC } from "react"; + +export const Spinner: FC<{ className?: string }> = ({ className = "" }) => { + return ( + + + + + ); +};