From cdb1e268e44e6cc155e4114f582ccb735754015b Mon Sep 17 00:00:00 2001 From: myrmidex Date: Sun, 3 May 2026 02:38:38 +0200 Subject: [PATCH] fix - TrackerController::show return {exists,tracker} to avoid null/{} ambiguity in JS --- app/Http/Controllers/TrackerController.php | 4 ++-- resources/js/components/Assets/AssetSetupForm.tsx | 2 +- resources/js/components/Onboarding/OnboardingFlow.tsx | 6 +++--- resources/js/pages/dashboard.tsx | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/TrackerController.php b/app/Http/Controllers/TrackerController.php index a94e999..512e6b4 100644 --- a/app/Http/Controllers/TrackerController.php +++ b/app/Http/Controllers/TrackerController.php @@ -17,10 +17,10 @@ public function show(): JsonResponse $tracker = User::default()->tracker; if (! $tracker) { - return response()->json(null); + return response()->json(['exists' => false]); } - return response()->json($tracker->load('asset')); + return response()->json(['exists' => true, 'tracker' => $tracker->load('asset')]); } public function store(Request $request): JsonResponse diff --git a/resources/js/components/Assets/AssetSetupForm.tsx b/resources/js/components/Assets/AssetSetupForm.tsx index 5295b1e..5f0c313 100644 --- a/resources/js/components/Assets/AssetSetupForm.tsx +++ b/resources/js/components/Assets/AssetSetupForm.tsx @@ -30,7 +30,7 @@ export default function AssetSetupForm({ onSuccess, onCancel }: AssetSetupFormPr try { const response = await fetch('/tracker'); if (response.ok) { - const tracker = await response.json(); + const { tracker } = await response.json(); if (tracker?.asset) { setData({ symbol: tracker.asset.symbol || '', diff --git a/resources/js/components/Onboarding/OnboardingFlow.tsx b/resources/js/components/Onboarding/OnboardingFlow.tsx index 93d77a6..3935b01 100644 --- a/resources/js/components/Onboarding/OnboardingFlow.tsx +++ b/resources/js/components/Onboarding/OnboardingFlow.tsx @@ -76,9 +76,9 @@ export default function OnboardingFlow({ onComplete }: OnboardingFlowProps) { useEffect(() => { fetch('/tracker') .then(r => r.ok ? r.json() : null) - .then(tracker => { - if (tracker) { - setPriceTracking(tracker.price_tracking_enabled ?? false); + .then(data => { + if (data?.tracker) { + setPriceTracking(data.tracker.price_tracking_enabled ?? false); setTrackerCreated(true); } }) diff --git a/resources/js/pages/dashboard.tsx b/resources/js/pages/dashboard.tsx index a3b1ebe..2a5e073 100644 --- a/resources/js/pages/dashboard.tsx +++ b/resources/js/pages/dashboard.tsx @@ -76,8 +76,8 @@ export default function Dashboard() { } if (trackerResponse.ok) { - const trackerData = await trackerResponse.json(); - setTracker(trackerData); + const { tracker: trackerData } = await trackerResponse.json(); + setTracker(trackerData ?? null); setCurrentAsset(trackerData?.asset ?? null); setPriceTrackingEnabled(trackerData?.price_tracking_enabled ?? false); }