From fa69d78afe6c7d6694c41eb14303306834ed38e5 Mon Sep 17 00:00:00 2001
From: myrmidex
Date: Sun, 3 May 2026 00:21:15 +0200
Subject: [PATCH] fix - Inertia 3: remove page component from @vite directive,
fix useCallback hook order violation
---
resources/js/pages/dashboard.tsx | 57 ++++++++++++++++----------------
resources/views/app.blade.php | 2 +-
2 files changed, 30 insertions(+), 29 deletions(-)
diff --git a/resources/js/pages/dashboard.tsx b/resources/js/pages/dashboard.tsx
index beac959..a3b1ebe 100644
--- a/resources/js/pages/dashboard.tsx
+++ b/resources/js/pages/dashboard.tsx
@@ -167,31 +167,7 @@ export default function Dashboard() {
profitLossPercentage,
};
- if (loading) {
- return (
- <>
-
-
- >
- );
- }
-
- // Toggle handlers with cascading behavior
- const handleLedClick = () => {
- const newShowProgressBar = !showProgressBar;
- setShowProgressBar(newShowProgressBar);
- if (!newShowProgressBar) {
- // If hiding progress bar, also hide stats box
- setShowStatsBox(false);
- }
- };
-
- const handleProgressClick = () => {
- setShowStatsBox(!showStatsBox);
- setActiveForm(null)
- };
-
- // Handle onboarding completion
+ // Handle onboarding completion — must be before any early returns (Rules of Hooks)
const handleOnboardingComplete = useCallback(async () => {
const [entriesResponse, priceResponse, milestonesResponse, trackerResponse] = await Promise.all([
fetch('/entries/summary'),
@@ -225,14 +201,39 @@ export default function Dashboard() {
}
if (trackerResponse.ok) {
- const tracker = await trackerResponse.json();
- setCurrentAsset(tracker?.asset ?? null);
- setPriceTrackingEnabled(tracker?.price_tracking_enabled ?? false);
+ const trackerData = await trackerResponse.json();
+ setTracker(trackerData);
+ setCurrentAsset(trackerData?.asset ?? null);
+ setPriceTrackingEnabled(trackerData?.price_tracking_enabled ?? false);
}
setNeedsOnboarding(totalQuantity === 0 || milestonesCount === 0);
}, []);
+ if (loading) {
+ return (
+ <>
+