import { useState, useEffect } from "react"; import { OverviewPage } from "./components/overview/OverviewPage"; import { Dashboard } from "./components/dashboard/Dashboard"; import { ProjectModal } from "./components/dashboard/ProjectModal"; import { ResourcesPage } from "./components/resources/ResourcesPage"; import { ToolsPage } from "./components/tools/ToolsPage"; import { SettingsPage } from "./components/settings/SettingsPage"; import { InsightPage } from "./components/insight/InsightPage"; import { Sidebar, type Page } from "./components/layout/Sidebar"; import { Toast } from "./components/ui/Toast"; import { getStartupAlerts, type StartupAlert } from "./lib/commands"; import { useUIStore } from "./store/ui"; import { check as checkUpdate } from "@tauri-apps/plugin-updater"; export default function App() { const [page, setPage] = useState("overview"); const [alerts, setAlerts] = useState([]); const [alertsDismissed, setAlertsDismissed] = useState(false); const showToast = useUIStore((s) => s.showToast); // 启动时静默检查更新 useEffect(() => { checkUpdate() .then((update) => { if (update?.available) { showToast(`🆕 发现新版本 v${update.version},前往「设置」页更新`); } }) .catch(() => {}); // 静默失败,不打扰用户 }, []); // 启动健康扫描结果(延迟 2s 等后端扫描完成) useEffect(() => { const timer = setTimeout(() => { getStartupAlerts() .then((list) => { if (list.length > 0) setAlerts(list); }) .catch(() => {}); }, 2000); return () => clearTimeout(timer); }, []); return (
{alerts.length > 0 && !alertsDismissed && (
⚠️
项目需要关注: {alerts.slice(0, 3).map((a) => `${a.project_name}(${a.detail})`).join("、")} {alerts.length > 3 && `,等 ${alerts.length - 3} 个项目`}
)}
{page === "overview" && } {page === "dashboard" && } {page === "resources" && } {page === "insight" && } {page === "tools" && } {page === "settings" && }
); }