diff --git a/src/renderer/src/App.tsx b/src/renderer/src/App.tsx index a8d31769019..a92afabf0ef 100644 --- a/src/renderer/src/App.tsx +++ b/src/renderer/src/App.tsx @@ -48,10 +48,7 @@ import { StarNagCard } from './components/StarNagCard' import { TelemetryFirstLaunchSurface } from './components/TelemetryFirstLaunchSurface' import { ZoomOverlay } from './components/ZoomOverlay' import { onOnboardingReopened } from './components/onboarding/show-onboarding-event' -import { - shouldCloseAppModalForOnboarding, - shouldShowOnboarding -} from './components/onboarding/should-show-onboarding' +import { shouldShowOnboarding } from './components/onboarding/should-show-onboarding' import { SshPassphraseDialog } from './components/settings/SshPassphraseDialog' import DeleteWorktreeDialog from './components/sidebar/DeleteWorktreeDialog' import { @@ -475,22 +472,6 @@ function App(): React.JSX.Element { actions.setContextualToursOnboardingVisible(suppressTours) }, [actions, onboarding, onboardingLoaded]) - useEffect(() => { - if ( - !shouldCloseAppModalForOnboarding({ - onboarding, - onboardingSettingsDetour, - activeModal - }) - ) { - return - } - // Why: Radix dialogs underneath onboarding treat clicks inside onboarding - // as outside interactions. Onboarding owns the first-run screen, so clear - // app modals instead of leaving a hidden dismissable layer mounted. - actions.closeModal() - }, [actions, activeModal, onboarding, onboardingSettingsDetour]) - useEffect(() => { if (!persistedUIReady || !onboardingLoaded || contextualToursAutoEligible !== null) { return diff --git a/src/renderer/src/components/onboarding/should-show-onboarding.test.ts b/src/renderer/src/components/onboarding/should-show-onboarding.test.ts deleted file mode 100644 index 196a93959d3..00000000000 --- a/src/renderer/src/components/onboarding/should-show-onboarding.test.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { describe, expect, it } from 'vitest' -import type { OnboardingState } from '../../../../shared/types' -import { shouldCloseAppModalForOnboarding, shouldShowOnboarding } from './should-show-onboarding' - -function makeOnboarding(overrides: Partial = {}): OnboardingState { - return { - closedAt: null, - outcome: null, - lastCompletedStep: -1, - checklist: { - addedRepo: false, - choseAgent: false, - ranFirstAgent: false, - ranSecondAgentOnSameTask: false, - triedCmdJ: false, - shapedSidebar: false, - reviewedDiff: false, - openedPr: false, - addedFolder: false, - openedFile: false, - ranAgentOnFile: false, - dismissed: false - }, - ...overrides - } -} - -describe('shouldShowOnboarding', () => { - it('shows onboarding until it has a closed timestamp', () => { - expect(shouldShowOnboarding(makeOnboarding())).toBe(true) - expect(shouldShowOnboarding(makeOnboarding({ closedAt: 123 }))).toBe(false) - expect(shouldShowOnboarding(null)).toBe(false) - }) -}) - -describe('shouldCloseAppModalForOnboarding', () => { - it('closes app modals while first-run onboarding owns the screen', () => { - expect( - shouldCloseAppModalForOnboarding({ - onboarding: makeOnboarding(), - onboardingSettingsDetour: false, - activeModal: 'feature-tips' - }) - ).toBe(true) - }) - - it('keeps modals when onboarding is closed, absent, detoured, or no modal is active', () => { - expect( - shouldCloseAppModalForOnboarding({ - onboarding: makeOnboarding({ closedAt: 123 }), - onboardingSettingsDetour: false, - activeModal: 'feature-tips' - }) - ).toBe(false) - expect( - shouldCloseAppModalForOnboarding({ - onboarding: null, - onboardingSettingsDetour: false, - activeModal: 'feature-tips' - }) - ).toBe(false) - expect( - shouldCloseAppModalForOnboarding({ - onboarding: makeOnboarding(), - onboardingSettingsDetour: true, - activeModal: 'feature-tips' - }) - ).toBe(false) - expect( - shouldCloseAppModalForOnboarding({ - onboarding: makeOnboarding(), - onboardingSettingsDetour: false, - activeModal: 'none' - }) - ).toBe(false) - }) -}) diff --git a/src/renderer/src/components/onboarding/should-show-onboarding.ts b/src/renderer/src/components/onboarding/should-show-onboarding.ts index f66981765b9..c50352a5653 100644 --- a/src/renderer/src/components/onboarding/should-show-onboarding.ts +++ b/src/renderer/src/components/onboarding/should-show-onboarding.ts @@ -5,15 +5,3 @@ import type { OnboardingState } from '../../../../shared/types' export function shouldShowOnboarding(onboarding: OnboardingState | null): boolean { return onboarding !== null && onboarding.closedAt === null } - -export function shouldCloseAppModalForOnboarding(args: { - onboarding: OnboardingState | null - onboardingSettingsDetour: boolean - activeModal: string -}): boolean { - return ( - shouldShowOnboarding(args.onboarding) && - !args.onboardingSettingsDetour && - args.activeModal !== 'none' - ) -}