From 540ce584464c905b6a668124961ccaf1d8b7ba86 Mon Sep 17 00:00:00 2001 From: Chuma McPhoy Date: Thu, 3 Oct 2024 10:12:06 +0200 Subject: [PATCH] feat: setup signup routes and redirect on success --- actions/registerUser.ts | 49 ++++++++++++++++++++------------------ constants/routes/signup.ts | 21 ++++++++++++++++ 2 files changed, 47 insertions(+), 23 deletions(-) create mode 100644 constants/routes/signup.ts diff --git a/actions/registerUser.ts b/actions/registerUser.ts index ed0802c4b..2429fb925 100644 --- a/actions/registerUser.ts +++ b/actions/registerUser.ts @@ -3,6 +3,7 @@ import { redirect } from "next/navigation" import { z } from "zod" +import { signupVerify } from "@/constants/routes/signup" import * as api from "@/lib/api" import { profileServiceServerActionProcedure } from "@/server/trpc" @@ -49,37 +50,39 @@ export const registerUser = profileServiceServerActionProcedure return { success: false, error: "Validation error" } } + let apiResponse try { - const apiResponse = await api.post(api.endpoints.v1.profile, { + apiResponse = await api.post(api.endpoints.v1.profile, { body: parsedPayload.data, headers: { Authorization: `Bearer ${ctx.serviceToken}`, }, }) - - if (!apiResponse.ok) { - const text = await apiResponse.text() - console.error( - "registerUser api error", - JSON.stringify({ - query: input, - error: { - status: apiResponse.status, - statusText: apiResponse.statusText, - error: text, - }, - }) - ) - return { success: false, error: "API error" } - } - - const json = await apiResponse.json() - console.log("json", json) - - // TODO: Redirect to actual success page. - redirect("/signup/success") } catch (error) { console.error("Unexpected error", error) return { success: false, error: "Unexpected error" } } + + if (!apiResponse.ok) { + const text = await apiResponse.text() + console.error( + "registerUser api error", + JSON.stringify({ + query: input, + error: { + status: apiResponse.status, + statusText: apiResponse.statusText, + error: text, + }, + }) + ) + return { success: false, error: "API error" } + } + + const json = await apiResponse.json() + console.log("registerUser: json", json) + + // Note: The redirect needs to be called after the try/catch block. + // See: https://nextjs.org/docs/app/api-reference/functions/redirect + redirect(signupVerify[ctx.lang]) }) diff --git a/constants/routes/signup.ts b/constants/routes/signup.ts new file mode 100644 index 000000000..12eca8615 --- /dev/null +++ b/constants/routes/signup.ts @@ -0,0 +1,21 @@ +import { LangRoute } from "@/types/routes" + +export const signup: LangRoute = { + en: "/en/scandic-friends/join-scandic-friends", + sv: "/sv/scandic-friends/bli-medlem", + no: "/no/scandic-friends/registrer-deg-for-scandic-friends", + fi: "/fi/scandic-friends/liity-scandic-friends-ohjelmaan", + da: "/da/scandic-friends/tilmeld-dig-scandic-friends", + de: "/de/scandic-friends/werden-sie-mitglied-von-scandic-friends", +} + +export const signupVerify: LangRoute = { + en: `${signup.en}/verify`, + sv: `${signup.sv}/verifiera`, + no: `${signup.no}/bekreft`, + fi: `${signup.fi}/vahvista`, + da: `${signup.da}/bekraeft`, + de: `${signup.de}/verifizieren`, +} + +// export const signup = [...Object.values(signupRoutes)]