From fadd824d12554eb9c14adbbab5ca7feecd729983 Mon Sep 17 00:00:00 2001 From: sean-brydon <55134778+sean-brydon@users.noreply.github.com> Date: Mon, 8 Dec 2025 11:35:44 +0000 Subject: [PATCH] feat: onboarding v3 QA final roast (#25667) * remove leading none * remove back button if coming from teams/org onboarding * add skip now --- .../onboarding/personal/settings/page.tsx | 6 ++++-- .../organizations/payment-redirect/route.ts | 1 + .../modules/onboarding/hooks/useCreateTeam.ts | 4 ++-- .../brand/organization-brand-view.tsx | 16 +++++++++++--- .../_components/InstallableAppCard.tsx | 4 +--- .../settings/personal-settings-view.tsx | 21 ++++++++++++------- .../invite/email/team-invite-email-view.tsx | 8 +++---- 7 files changed, 39 insertions(+), 21 deletions(-) diff --git a/apps/web/app/(use-page-wrapper)/onboarding/personal/settings/page.tsx b/apps/web/app/(use-page-wrapper)/onboarding/personal/settings/page.tsx index 114be2a853..20c267d0a6 100644 --- a/apps/web/app/(use-page-wrapper)/onboarding/personal/settings/page.tsx +++ b/apps/web/app/(use-page-wrapper)/onboarding/personal/settings/page.tsx @@ -19,7 +19,7 @@ export const generateMetadata = async () => { ); }; -const ServerPage = async () => { +const ServerPage = async (props: { searchParams: Promise<{ fromTeamOnboarding?: string }> }) => { const session = await getServerSession({ req: buildLegacyRequest(await headers(), await cookies()) }); if (!session?.user?.id) { @@ -28,8 +28,10 @@ const ServerPage = async () => { const userEmail = session.user.email || ""; const userName = session.user.name || ""; + const searchParams = await props.searchParams; + const fromTeamOnboarding = searchParams?.fromTeamOnboarding === "true"; - return ; + return ; }; export default ServerPage; diff --git a/apps/web/app/api/organizations/payment-redirect/route.ts b/apps/web/app/api/organizations/payment-redirect/route.ts index fadadc5a47..884cee42ce 100644 --- a/apps/web/app/api/organizations/payment-redirect/route.ts +++ b/apps/web/app/api/organizations/payment-redirect/route.ts @@ -43,6 +43,7 @@ async function getHandler(req: NextRequest) { // If onboarding-v3 is enabled AND organizationOnboardingId exists, redirect to onboarding flow if (isOnboardingV3Enabled && organizationOnboardingId) { + params.append("fromTeamOnboarding", "true"); const redirectUrl = new URL( `/onboarding/personal/settings?${params.toString()}`, WEBAPP_URL diff --git a/apps/web/modules/onboarding/hooks/useCreateTeam.ts b/apps/web/modules/onboarding/hooks/useCreateTeam.ts index bc7f09bb6a..a65971c254 100644 --- a/apps/web/modules/onboarding/hooks/useCreateTeam.ts +++ b/apps/web/modules/onboarding/hooks/useCreateTeam.ts @@ -105,9 +105,9 @@ export function useCreateTeam() { // Redirect to personal settings after successful invite const gettingStartedPath = flags["onboarding-v3"] - ? "/onboarding/personal/settings" + ? "/onboarding/personal/settings?fromTeamOnboarding=true" : "/getting-started"; - router.push(gettingStartedPath); + router.replace(gettingStartedPath); } catch (error) { console.error("Failed to invite members:", error); // Extract error message from TRPC error diff --git a/apps/web/modules/onboarding/organization/brand/organization-brand-view.tsx b/apps/web/modules/onboarding/organization/brand/organization-brand-view.tsx index d0c7744635..fc95555faa 100644 --- a/apps/web/modules/onboarding/organization/brand/organization-brand-view.tsx +++ b/apps/web/modules/onboarding/organization/brand/organization-brand-view.tsx @@ -81,6 +81,11 @@ export const OrganizationBrandView = ({ userEmail }: OrganizationBrandViewProps) router.push("/onboarding/organization/teams"); }; + const handleSkip = () => { + // Skip brand customization and go to teams + router.push("/onboarding/organization/teams"); + }; + return ( {/* Left column - Main content */} @@ -95,9 +100,14 @@ export const OrganizationBrandView = ({ userEmail }: OrganizationBrandViewProps) onClick={() => router.push("/onboarding/organization/details")}> {t("back")} - +
+ + +
}> {/* Form */} diff --git a/apps/web/modules/onboarding/personal/_components/InstallableAppCard.tsx b/apps/web/modules/onboarding/personal/_components/InstallableAppCard.tsx index 9681faade5..40d444bf76 100644 --- a/apps/web/modules/onboarding/personal/_components/InstallableAppCard.tsx +++ b/apps/web/modules/onboarding/personal/_components/InstallableAppCard.tsx @@ -37,9 +37,7 @@ export const InstallableAppCard = ({ )} {app.logo && {app.name}} -

+

{app.name}

{ +export const PersonalSettingsView = ({ + userEmail, + userName, + fromTeamOnboarding = false, +}: PersonalSettingsViewProps) => { const router = useRouter(); const { t } = useLocale(); const { data: user } = trpc.viewer.me.get.useQuery(); @@ -117,12 +122,14 @@ export const PersonalSettingsView = ({ userEmail, userName }: PersonalSettingsVi subtitle={t("personal_details_subtitle")} footer={
- + {!fromTeamOnboarding && ( + + )}