'use client'; import { Button } from '@/components/ui/button'; import { initializeAuthenticatedApp } from '@/services/initializer.service'; import { useAppStore } from '@/store/app.store'; import { useAuthStore } from '@/store/auth.store'; import type { ReactNode } from 'react'; import { useEffect, useState } from 'react'; export default function AppInitializer({ children }: { children: ReactNode }) { const accessToken = useAuthStore((state) => state.accessToken); const user = useAppStore((state) => state.user); const loadStatus = useAppStore((state) => state.loadStatus); const setLoading = useAppStore((state) => state.setLoading); const setLoaded = useAppStore((state) => state.setLoaded); const setLoadError = useAppStore((state) => state.setLoadError); const [retryAttempt, setRetryAttempt] = useState(0); useEffect(() => { let isActive = true; const initialize = async () => { if (!accessToken || user) { setLoaded(); return; } setLoading(); try { await initializeAuthenticatedApp(); } catch { if (isActive) { setLoadError(); } } }; initialize(); return () => { isActive = false; }; }, [accessToken, retryAttempt, setLoaded, setLoadError, setLoading, user]); if (accessToken && !user && loadStatus === 'error') { return (

Unable to load workspace

We could not load your account details. Your session has been kept, so you can safely try again.

); } return children; }