mirror of
https://github.com/Portabase/portabase.git
synced 2026-07-14 11:16:13 +02:00
feat(onboarding): page.tsx uses resolveOnboardingState — server-driven resume
This commit is contained in:
@@ -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");
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -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}
|
||||||
|
/>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user