import { useState, useEffect } from 'react'; import { useTheme } from './lib/theme'; import { api } from './lib/api'; import Sidebar from './components/Sidebar'; import Toolbar from './components/Toolbar'; import StatusBar from './components/StatusBar'; import Dashboard from './pages/Dashboard'; import SearchPage from './pages/Search'; import Installed from './pages/Installed'; import Updates from './pages/Updates'; import Categories from './pages/Categories'; import SettingsPage from './pages/Settings'; import PackageDetails from './pages/PackageDetails'; import type { Page } from './types'; export default function App() { const { theme } = useTheme(); const isDark = theme === 'dark'; const [activePage, setActivePage] = useState('dashboard'); const [selectedPackage, setSelectedPackage] = useState(null); const [previousPage, setPreviousPage] = useState('dashboard'); const [backendStatus, setBackendStatus] = useState<'connected' | 'disconnected' | 'checking'>('checking'); const [installedCount, setInstalledCount] = useState(0); const [updatesCount, setUpdatesCount] = useState(0); useEffect(() => { // Check backend health api.health() .then(() => setBackendStatus('connected')) .catch(() => setBackendStatus('disconnected')); // Get installed count api.listInstalled() .then(data => setInstalledCount(data.count)) .catch(() => {}); // Get updates count api.checkUpdates() .then(data => setUpdatesCount(data.count)) .catch(() => {}); }, []); const navigate = (page: Page) => { setSelectedPackage(null); setActivePage(page); }; const selectPackage = (name: string) => { setPreviousPage(activePage); setSelectedPackage(name); setActivePage('package-details'); }; const goBack = () => { setSelectedPackage(null); setActivePage(previousPage); }; const handleSync = () => { setBackendStatus('checking'); api.health() .then(() => setBackendStatus('connected')) .catch(() => setBackendStatus('disconnected')); api.checkUpdates() .then(data => setUpdatesCount(data.count)) .catch(() => {}); }; const renderPage = () => { if (activePage === 'package-details' && selectedPackage) { return ; } switch (activePage) { case 'dashboard': return ; case 'search': return ; case 'installed': return ; case 'updates': return ; case 'categories': return ; case 'settings': return ; default: return ; } }; return (
{renderPage()}
); }