refactor(SW-360): improve error handling logic

This commit is contained in:
Chuma McPhoy
2024-10-02 17:37:14 +02:00
committed by Pontus Dreij
parent fe198b5fc5
commit 8583306b3c
3 changed files with 14 additions and 15 deletions

View File

@@ -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" }
}
})

View File

@@ -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 (

View File

@@ -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,