diff --git a/apps/web/src/actions/workspaceOnboarding/calculateNavbarSteps.ts b/apps/web/src/actions/workspaceOnboarding/calculateNavbarSteps.ts new file mode 100644 index 0000000000..737053941a --- /dev/null +++ b/apps/web/src/actions/workspaceOnboarding/calculateNavbarSteps.ts @@ -0,0 +1,15 @@ +'use server' + +import { authProcedure } from '../procedures' +import { calculateAllSteps } from '@latitude-data/core/services/workspaceOnboarding/steps/calculateAllSteps' + +/** + * Calculate all steps for the onboarding + */ +export const calculateNavbarStepsAction = authProcedure.action( + async ({ ctx }) => { + return await calculateAllSteps({ + workspace: ctx.workspace, + }).then((r) => r.unwrap()) + }, +) diff --git a/apps/web/src/actions/workspaceOnboarding/moveNextStep.ts b/apps/web/src/actions/workspaceOnboarding/moveNextStep.ts index e7ba86909c..ffa36f13c5 100644 --- a/apps/web/src/actions/workspaceOnboarding/moveNextStep.ts +++ b/apps/web/src/actions/workspaceOnboarding/moveNextStep.ts @@ -3,12 +3,15 @@ import { getWorkspaceOnboarding } from '@latitude-data/core/services/workspaceOnboarding/get' import { authProcedure } from '../procedures' import { moveNextOnboardingStep } from '@latitude-data/core/services/workspaceOnboarding/steps/moveNextOnboardingStep' +import { z } from 'zod' +import { OnboardingStepKey } from '@latitude-data/constants/onboardingSteps' /** * Move to the next onboarding step */ -export const moveNextOnboardingStepAction = authProcedure.action( - async ({ ctx }) => { +export const moveNextOnboardingStepAction = authProcedure + .inputSchema(z.object({ currentStep: z.nativeEnum(OnboardingStepKey) })) + .action(async ({ parsedInput, ctx }) => { const onboarding = await getWorkspaceOnboarding({ workspace: ctx.workspace, }).then((r) => r.unwrap()) @@ -16,8 +19,8 @@ export const moveNextOnboardingStepAction = authProcedure.action( const nextOnboardingStep = await moveNextOnboardingStep({ onboarding, workspace: ctx.workspace, + currentStep: parsedInput.currentStep, }).then((r) => r.unwrap()) return nextOnboardingStep - }, -) + }) diff --git a/apps/web/src/app/(onboarding)/onboarding/_components/Navbar/NocodersNavbar.tsx b/apps/web/src/app/(onboarding)/onboarding/_components/Navbar/NocodersNavbar.tsx index 0eb505d574..533927ab15 100644 --- a/apps/web/src/app/(onboarding)/onboarding/_components/Navbar/NocodersNavbar.tsx +++ b/apps/web/src/app/(onboarding)/onboarding/_components/Navbar/NocodersNavbar.tsx @@ -13,54 +13,54 @@ import { useCurrentProject } from '@latitude-data/web-ui/providers' import { redirect } from 'next/navigation' export default function NocodersNavbar({ + onboardingSteps, currentStep, isLoadingOnboarding, executeCompleteOnboarding, }: { + onboardingSteps: OnboardingStepKey[] executeCompleteOnboarding: () => void currentStep: OnboardingStepKey | undefined | null // TODO(onboarding): remove null when data migration is done isLoadingOnboarding: boolean }) { - const project = useCurrentProject() + const { project } = useCurrentProject() const skipOnboarding = useCallback(() => { executeCompleteOnboarding() redirect(ROUTES.dashboard.root) }, [executeCompleteOnboarding]) + const ONBOARDING_STEPS = Object.entries(ONBOARDING_STEP_CONTENT) + const isLast = ONBOARDING_STEPS.length - 1 + const filteredNavbarSteps = ONBOARDING_STEPS.filter(([key]) => + onboardingSteps.includes(key as OnboardingStepKey), + ) + return (