import React, { useState, useEffect } from 'react'; import ProgressStepper from '../components/dashboard/ProgressStepper'; import DashboardHome from '../components/dashboard/DashboardHome'; import EmptyProjectsState from '../components/dashboard/EmptyProjectsState'; import WizardModal from '../components/dashboard/WizardModal'; import { useQuery } from '@tanstack/react-query'; import { getSubscriptionStatus, createWelcomeSeed } from '../api/client'; import { useProjectStore } from '../store/useProjectStore'; import { WifiOff } from 'lucide-react'; import { motion, AnimatePresence } from 'framer-motion'; import { OnboardingTour } from '../components/onboarding/OnboardingTour'; const Dashboard: React.FC = () => { const [runTour, setRunTour] = useState(false); const [showWizard, setShowWizard] = useState(false); const { projects, fetchProjects } = useProjectStore(); useEffect(() => { let timeoutId: ReturnType; const initDashboard = async () => { await fetchProjects(); const hasSeenTour = localStorage.getItem('has_seen_tour_dashboard'); if (!hasSeenTour) { // Gdy brak projektów (Empty State) i start, tworzymy seed onboardingowy try { const seedData = await createWelcomeSeed(); if (seedData) { await fetchProjects(); // Odśwież listę, aby pokazać powitalny projekt } } catch (e) { console.error("Błąd podczas ładowania seeda", e); } timeoutId = setTimeout(() => setRunTour(true), 1500); } }; initDashboard(); return () => { if (timeoutId) clearTimeout(timeoutId); }; }, []); // Używamy domyślnych, globalnych kroków zdefiniowanych w OnboardingTour const { isError } = useQuery({ queryKey: ['subscription'], queryFn: getSubscriptionStatus, retry: false }); return (
{isError && ( Tryb Offline (Mock) )}
{projects.length === 0 ? (
setShowWizard(true)} />
) : ( <>
Projekt Dotacyjny • {projects[0].status === 'completed' ? 'Zakończony' : 'W Trakcie'}

Przegląd Dotacji

0) ? (projects[0].sections.every(s => s.is_approved) ? 5 : 4) : projects[0].program_name ? 3 : projects[0].description ? 2 : 1 } />
)}
{runTour && ( { setRunTour(false); localStorage.setItem('has_seen_tour_dashboard', 'true'); }} /> )} {showWizard && setShowWizard(false)} />}
); }; export default Dashboard;