feat(onboarding): page.tsx uses resolveOnboardingState — server-driven resume

This commit is contained in:
Théo LAGACHE
2026-06-18 12:10:30 +02:00
parent 4b5367a456
commit 0fb060e2da
2 changed files with 19 additions and 11 deletions
+8 -3
View File
@@ -4,17 +4,22 @@ import { useRouter } from "next/navigation";
import { OnboardingProvider } from "@onboardjs/react"; import { OnboardingProvider } from "@onboardjs/react";
import { onboardingSteps } from "@/features/onboarding/onboarding-steps"; import { onboardingSteps } from "@/features/onboarding/onboarding-steps";
import { OnboardingShell } from "@/features/onboarding/onboarding-shell"; import { OnboardingShell } from "@/features/onboarding/onboarding-shell";
import { markOnboardingDone } from "@/features/onboarding/onboarding-cookie"; import type { OnboardingFlowData } from "@/features/onboarding/onboarding.types";
export const OnboardingClient = ({ initialStepId }: { initialStepId: string }) => { type Props = {
initialStepId: string;
initialFlowData: Partial<OnboardingFlowData>;
};
export const OnboardingClient = ({ initialStepId, initialFlowData }: Props) => {
const router = useRouter(); const router = useRouter();
return ( return (
<OnboardingProvider <OnboardingProvider
steps={onboardingSteps} steps={onboardingSteps}
initialStepId={initialStepId} initialStepId={initialStepId}
initialContext={{ flowData: initialFlowData }}
onFlowComplete={async () => { onFlowComplete={async () => {
await markOnboardingDone();
router.push("/dashboard/home"); router.push("/dashboard/home");
}} }}
> >
+11 -8
View File
@@ -1,15 +1,18 @@
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
import { currentUser } from "@/lib/auth/current-user"; import { resolveOnboardingState } from "@/features/onboarding/onboarding-state";
import { isOnboardingDone } from "@/features/onboarding/onboarding-cookie";
import { OnboardingClient } from "./onboarding-client"; import { OnboardingClient } from "./onboarding-client";
export default async function WelcomePage() { export default async function WelcomePage() {
if (await isOnboardingDone()) { const result = await resolveOnboardingState();
redirect("/dashboard/home");
if ("redirect" in result) {
redirect(result.redirect);
} }
const user = await currentUser(); return (
const initialStepId = user ? "org-create" : "sso-gate"; <OnboardingClient
initialStepId={result.stepId}
return <OnboardingClient initialStepId={initialStepId} />; initialFlowData={result.flowData}
/>
);
} }