From 5bdef742c79c21656445b5ec8f429f9b65439865 Mon Sep 17 00:00:00 2001 From: Chuma McPhoy Date: Wed, 2 Oct 2024 17:37:14 +0200 Subject: [PATCH] refactor(SW-360): improve error handling logic --- actions/registerUser.ts | 13 ++++++++----- components/Forms/Register/index.tsx | 14 ++++---------- server/routers/contentstack/contentPage/query.ts | 2 ++ 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/actions/registerUser.ts b/actions/registerUser.ts index 3bca2da81..ed0802c4b 100644 --- a/actions/registerUser.ts +++ b/actions/registerUser.ts @@ -1,5 +1,6 @@ "use server" +import { redirect } from "next/navigation" import { z } from "zod" import * as api from "@/lib/api" @@ -45,7 +46,7 @@ export const registerUser = profileServiceServerActionProcedure }) ) - return false + return { success: false, error: "Validation error" } } try { @@ -57,7 +58,7 @@ export const registerUser = profileServiceServerActionProcedure }) if (!apiResponse.ok) { - const text = apiResponse.text() + const text = await apiResponse.text() console.error( "registerUser api error", JSON.stringify({ @@ -69,14 +70,16 @@ export const registerUser = profileServiceServerActionProcedure }, }) ) - return false + return { success: false, error: "API error" } } const json = await apiResponse.json() console.log("json", json) - return true + // TODO: Redirect to actual success page. + redirect("/signup/success") } catch (error) { - return false + console.error("Unexpected error", error) + return { success: false, error: "Unexpected error" } } }) diff --git a/components/Forms/Register/index.tsx b/components/Forms/Register/index.tsx index ed1387bdd..1b152008f 100644 --- a/components/Forms/Register/index.tsx +++ b/components/Forms/Register/index.tsx @@ -52,17 +52,11 @@ export default function Form({ link, subtitle, title }: RegisterFormProps) { const zipCode = intl.formatMessage({ id: "Zip code" }) async function handleSubmit(data: RegisterSchema) { - const isSuccessResponse = await registerUser(data) - if (!isSuccessResponse) { - toast.error("Something went wrong!") - } else { - // TODO: Toast should be removed and we should show a different page - toast.success("Form submitted successfully") - // should we navigate to sub route like /signup/success ? - // router.push("/") - - methods.reset() + const result = await registerUser(data) + if (!result.success) { + toast.error(intl.formatMessage({ id: "Something went wrong!" })) } + // No need to handle success case here, as the redirect happens server-side. } return ( diff --git a/server/routers/contentstack/contentPage/query.ts b/server/routers/contentstack/contentPage/query.ts index 79ef83a4e..bae7addbe 100644 --- a/server/routers/contentstack/contentPage/query.ts +++ b/server/routers/contentstack/contentPage/query.ts @@ -21,6 +21,8 @@ export const contentPageQueryRouter = router({ get: contentstackExtendedProcedureUID.query(async ({ ctx }) => { const { lang, uid } = ctx + // TODO: Add logic to: check if Authed & Content Page URL is a "signup page", if so, redirect to home page. + const contentPageRefsData = await fetchContentPageRefs(lang, uid) const contentPageRefs = validateContentPageRefs( contentPageRefsData,