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 { onboardingSteps } from "@/features/onboarding/onboarding-steps";
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();
return (
<OnboardingProvider
steps={onboardingSteps}
initialStepId={initialStepId}
initialContext={{ flowData: initialFlowData }}
onFlowComplete={async () => {
await markOnboardingDone();
router.push("/dashboard/home");
}}
>
+11 -8
View File
@@ -1,15 +1,18 @@
import { redirect } from "next/navigation";
import { currentUser } from "@/lib/auth/current-user";
import { isOnboardingDone } from "@/features/onboarding/onboarding-cookie";
import { resolveOnboardingState } from "@/features/onboarding/onboarding-state";
import { OnboardingClient } from "./onboarding-client";
export default async function WelcomePage() {
if (await isOnboardingDone()) {
redirect("/dashboard/home");
const result = await resolveOnboardingState();
if ("redirect" in result) {
redirect(result.redirect);
}
const user = await currentUser();
const initialStepId = user ? "org-create" : "sso-gate";
return <OnboardingClient initialStepId={initialStepId} />;
return (
<OnboardingClient
initialStepId={result.stepId}
initialFlowData={result.flowData}
/>
);
}