import memoize from 'lodash-es/memoize.js' import { getCurrentProjectConfig, saveCurrentProjectConfig, } from './utils/config.js' export { getSteps, isProjectOnboardingComplete, type Step, } from './projectOnboardingSteps.js' import { isProjectOnboardingComplete } from './projectOnboardingSteps.js' export function maybeMarkProjectOnboardingComplete(): void { // Short-circuit on cached config — isProjectOnboardingComplete() hits // the filesystem, and REPL.tsx calls this on every prompt submit. if (getCurrentProjectConfig().hasCompletedProjectOnboarding) { return } if (isProjectOnboardingComplete()) { saveCurrentProjectConfig(current => ({ ...current, hasCompletedProjectOnboarding: true, })) } } export const shouldShowProjectOnboarding = memoize((): boolean => { const projectConfig = getCurrentProjectConfig() // Short-circuit on cached config before isProjectOnboardingComplete() // hits the filesystem — this runs during first render. if ( projectConfig.hasCompletedProjectOnboarding || projectConfig.projectOnboardingSeenCount >= 4 || process.env.IS_DEMO ) { return false } return !isProjectOnboardingComplete() }) export function incrementProjectOnboardingSeenCount(): void { saveCurrentProjectConfig(current => ({ ...current, projectOnboardingSeenCount: current.projectOnboardingSeenCount + 1, })) }