From d3bbe8784f78b7ca60e631d6423a1d316c92acc7 Mon Sep 17 00:00:00 2001 From: Leo Giovanetti Date: Mon, 24 Jul 2023 18:11:25 -0300 Subject: [PATCH] Onboarding wizard and verif email (#10346) --- .../getting-started/steps-views/UserSettings.tsx | 5 +++-- apps/web/pages/api/auth/signup.ts | 12 ++++++------ apps/web/pages/getting-started/[[...step]].tsx | 6 +++++- apps/web/pages/signup.tsx | 8 +++++--- 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/apps/web/components/getting-started/steps-views/UserSettings.tsx b/apps/web/components/getting-started/steps-views/UserSettings.tsx index e39fb83340..c67df7d461 100644 --- a/apps/web/components/getting-started/steps-views/UserSettings.tsx +++ b/apps/web/components/getting-started/steps-views/UserSettings.tsx @@ -15,6 +15,7 @@ import { UsernameAvailabilityField } from "@components/ui/UsernameAvailability"; interface IUserSettingsProps { nextStep: () => void; + hideUsername?: boolean; } const UserSettings = (props: IUserSettingsProps) => { @@ -66,8 +67,8 @@ const UserSettings = (props: IUserSettingsProps) => { return (
- {/* Username textfield */} - + {/* Username textfield: when not coming from signup */} + {!props.hideUsername && } {/* Full name textfield */}
diff --git a/apps/web/pages/api/auth/signup.ts b/apps/web/pages/api/auth/signup.ts index 13551b66f0..803d00bbfc 100644 --- a/apps/web/pages/api/auth/signup.ts +++ b/apps/web/pages/api/auth/signup.ts @@ -198,13 +198,13 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) id: foundToken.id, }, }); + } else { + await sendEmailVerification({ + email: userEmail, + username, + language, + }); } - await sendEmailVerification({ - email: userEmail, - username, - language, - }); - res.status(201).json({ message: "Created user" }); } diff --git a/apps/web/pages/getting-started/[[...step]].tsx b/apps/web/pages/getting-started/[[...step]].tsx index 345290d13b..46811b4ac2 100644 --- a/apps/web/pages/getting-started/[[...step]].tsx +++ b/apps/web/pages/getting-started/[[...step]].tsx @@ -42,6 +42,7 @@ const stepTransform = (step: (typeof steps)[number]) => { const stepRouteSchema = z.object({ step: z.array(z.enum(steps)).default([INITIAL_STEP]), + from: z.string().optional(), }); // TODO: Refactor how steps work to be contained in one array/object. Currently we have steps,initalsteps,headers etc. These can all be in one place @@ -52,6 +53,7 @@ const OnboardingPage = () => { const result = stepRouteSchema.safeParse(router.query); const currentStep = result.success ? result.data.step[0] : INITIAL_STEP; + const from = result.success ? result.data.from : ""; const headers = [ { @@ -141,7 +143,9 @@ const OnboardingPage = () => {
}> - {currentStep === "user-settings" && goToIndex(1)} />} + {currentStep === "user-settings" && ( + goToIndex(1)} hideUsername={from === "signup"} /> + )} {currentStep === "connected-calendar" && goToIndex(2)} />} {currentStep === "connected-video" && goToIndex(3)} />} diff --git a/apps/web/pages/signup.tsx b/apps/web/pages/signup.tsx index bb18fe4261..2184a8295e 100644 --- a/apps/web/pages/signup.tsx +++ b/apps/web/pages/signup.tsx @@ -78,9 +78,11 @@ export default function Signup({ prepopulateFormValues, token, orgSlug }: Signup const verifyOrGettingStarted = flags["email-verification"] ? "auth/verify-email" : "getting-started"; await signIn<"credentials">("credentials", { ...data, - callbackUrl: router.query.callbackUrl - ? `${WEBAPP_URL}/${router.query.callbackUrl}` - : `${WEBAPP_URL}/${verifyOrGettingStarted}`, + callbackUrl: `${ + router.query.callbackUrl + ? `${WEBAPP_URL}/${router.query.callbackUrl}` + : `${WEBAPP_URL}/${verifyOrGettingStarted}` + }?from=signup`, }); }) .catch((err) => {