From 3e32e24748ec43e070262dd604e3f0263faabcae Mon Sep 17 00:00:00 2001 From: jamesread Date: Tue, 24 Sep 2024 00:40:01 +0000 Subject: [PATCH 1/3] feat: Better registration errors --- .../frontend/src/components/auth/register.tsx | 43 +++++++++++++------ 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/apps/frontend/src/components/auth/register.tsx b/apps/frontend/src/components/auth/register.tsx index ff678025..0f3d3cb4 100644 --- a/apps/frontend/src/components/auth/register.tsx +++ b/apps/frontend/src/components/auth/register.tsx @@ -65,6 +65,17 @@ export function Register() { ); } +function getHelpfulReasonForRegistrationFailure(httpCode) { + switch (httpCode) { + case 400: + return 'Email already exists'; + case 404: + return 'Your browser got a 404 when trying to contact the API, the most likely reasons for this are the NEXT_PUBLIC_BACKEND_URL is set incorrectly, or the backend is not running.'; + } + + return 'Unhandled error: ' + httpCode; +} + export function RegisterAfter({ token, provider, @@ -97,23 +108,31 @@ export function RegisterAfter({ const onSubmit: SubmitHandler = async (data) => { setLoading(true); - const register = await fetchData('/auth/register', { + + await fetchData('/auth/register', { method: 'POST', body: JSON.stringify({ ...data }), - }); - if (register.status === 400) { - form.setError('email', { - message: 'Email already exists', - }); - + }).then((response) => { setLoading(false); - } - fireEvents('register'); + if (response.status === 200) { + fireEvents('register') - if (register.headers.get('activate')) { - router.push('/auth/activate'); - } + if (response.headers.get('activate') === "true") { + router.push('/auth/activate'); + } else { + router.push('/auth/login'); + } + } else { + form.setError('email', { + message: getHelpfulReasonForRegistrationFailure(response.status), + }); + } + }).catch(e => { + form.setError("email", { + message: 'General error: ' + e.toString() + '. Please check your browser console.', + }); + }) }; return ( From dbf58a9f09de070c12ba8edb8c34be6bc955fca0 Mon Sep 17 00:00:00 2001 From: jamesread Date: Tue, 24 Sep 2024 00:48:22 +0000 Subject: [PATCH 2/3] Add type to registration failure func --- apps/frontend/src/components/auth/register.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/frontend/src/components/auth/register.tsx b/apps/frontend/src/components/auth/register.tsx index 0f3d3cb4..cd10c7a8 100644 --- a/apps/frontend/src/components/auth/register.tsx +++ b/apps/frontend/src/components/auth/register.tsx @@ -65,7 +65,7 @@ export function Register() { ); } -function getHelpfulReasonForRegistrationFailure(httpCode) { +function getHelpfulReasonForRegistrationFailure(httpCode: int) { switch (httpCode) { case 400: return 'Email already exists'; From 2e24c78c5d89d96af2d7c1191a86c9c5fcf05d9c Mon Sep 17 00:00:00 2001 From: jamesread Date: Tue, 24 Sep 2024 00:55:34 +0000 Subject: [PATCH 3/3] Add number type to registration failure func --- apps/frontend/src/components/auth/register.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/frontend/src/components/auth/register.tsx b/apps/frontend/src/components/auth/register.tsx index cd10c7a8..67fefbdf 100644 --- a/apps/frontend/src/components/auth/register.tsx +++ b/apps/frontend/src/components/auth/register.tsx @@ -65,7 +65,7 @@ export function Register() { ); } -function getHelpfulReasonForRegistrationFailure(httpCode: int) { +function getHelpfulReasonForRegistrationFailure(httpCode: number) { switch (httpCode) { case 400: return 'Email already exists';