From c493630bb55ccd1cd4dfa8f09ed6ea6236500594 Mon Sep 17 00:00:00 2001 From: Dmitrii Iurco Date: Sat, 30 May 2026 02:44:41 -0400 Subject: [PATCH] =?UTF-8?q?fix:=20Dashboard=20blank=20page=20=E2=80=94=20m?= =?UTF-8?q?ove=20state=20declarations=20before=20use?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SERVICES was computed on line 33 using activeServiceIds which was not declared until line 36. In strict JS, const is not hoisted — this threw a ReferenceError on mount, crashing the component and showing a blank page. Co-Authored-By: Claude Sonnet 4.6 --- webui/src/pages/Dashboard.jsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/webui/src/pages/Dashboard.jsx b/webui/src/pages/Dashboard.jsx index 60f36d5..45133cb 100644 --- a/webui/src/pages/Dashboard.jsx +++ b/webui/src/pages/Dashboard.jsx @@ -24,6 +24,10 @@ function Dashboard({ isOnline }) { const { domain = 'cell', cell_name = 'mycell', effective_domain, domain_mode = 'lan' } = useConfig(); const svcDomain = (domain_mode !== 'lan' && effective_domain) ? effective_domain : domain; const proto = domain_mode === 'lan' ? 'http' : 'https'; + const [cellStatus, setCellStatus] = useState(null); + const [servicesStatus, setServicesStatus] = useState(null); + const [activeServiceIds, setActiveServiceIds] = useState(new Set()); + const ALL_SERVICE_LINKS = [ { id: null, name: 'Cell Home', url: domain_mode === 'lan' ? `http://${cell_name}.${domain}` : `https://${svcDomain}`, desc: 'Main UI — no login needed' }, { id: 'calendar', name: 'Calendar', url: `${proto}://calendar.${svcDomain}`, desc: 'Use your configured account credentials' }, @@ -31,9 +35,6 @@ function Dashboard({ isOnline }) { { id: 'email', name: 'Webmail', url: `${proto}://mail.${svcDomain}`, desc: 'Use your configured account credentials' }, ]; const SERVICES = ALL_SERVICE_LINKS.filter(s => s.id === null || activeServiceIds.has(s.id)); - const [cellStatus, setCellStatus] = useState(null); - const [servicesStatus, setServicesStatus] = useState(null); - const [activeServiceIds, setActiveServiceIds] = useState(new Set()); const [isLoading, setIsLoading] = useState(true); const [serviceControls, setServiceControls] = useState({});