diff --git a/resources/js/components/Onboarding/CreateTrackerStep.tsx b/resources/js/components/Onboarding/CreateTrackerStep.tsx index 275e45b..2669d19 100644 --- a/resources/js/components/Onboarding/CreateTrackerStep.tsx +++ b/resources/js/components/Onboarding/CreateTrackerStep.tsx @@ -49,7 +49,7 @@ export default function CreateTrackerStep({ onSuccess }: CreateTrackerStepProps) }), }); - if (response.ok || response.status === 302) { + if (response.ok || response.status === 201 || response.status === 409) { onSuccess(priceTracking); } else { const data = await response.json(); diff --git a/resources/js/components/Onboarding/OnboardingFlow.tsx b/resources/js/components/Onboarding/OnboardingFlow.tsx index 78aa7a0..93d77a6 100644 --- a/resources/js/components/Onboarding/OnboardingFlow.tsx +++ b/resources/js/components/Onboarding/OnboardingFlow.tsx @@ -72,6 +72,19 @@ export default function OnboardingFlow({ onComplete }: OnboardingFlowProps) { const [currentStep, setCurrentStep] = useState(0); const [steps, setSteps] = useState([]); + // On mount: check if a tracker already exists and skip step 1 if so + useEffect(() => { + fetch('/tracker') + .then(r => r.ok ? r.json() : null) + .then(tracker => { + if (tracker) { + setPriceTracking(tracker.price_tracking_enabled ?? false); + setTrackerCreated(true); + } + }) + .catch(() => {}); + }, []); + const checkOnboardingStatus = useCallback(async (currentSteps: OnboardingStep[]) => { try { const [entriesData, milestonesData, priceData] = await Promise.all([