import { useState, useEffect } from "react"; import { useQueryClient } from "@tanstack/react-query"; import { OverviewPage } from "./components/overview/OverviewPage"; import { Dashboard } from "./components/dashboard/Dashboard"; import { ProjectModal } from "./components/dashboard/ProjectModal"; import { DevToolsPage } from "./components/devtools/DevToolsPage"; import { ProxyPage } from "./components/proxy/ProxyPage"; import { SettingsPage } from "./components/settings/SettingsPage"; import { Sidebar, type Page } from "./components/layout/Sidebar"; import { Toast } from "./components/ui/Toast"; import LoginPage from "./components/auth/LoginPage"; import { githubGetAccount, githubLogout, type GitAccount } from "./lib/commands"; import { useSpacesSync } from "./hooks/useSpacesSync"; import { useUIStore } from "./store/ui"; import { check as checkUpdate } from "@tauri-apps/plugin-updater"; export default function App() { const [page, setPage] = useState("overview"); const [account, setAccount] = useState(undefined); const qc = useQueryClient(); const showToast = useUIStore((s) => s.showToast); useEffect(() => { githubGetAccount().then(setAccount).catch(() => setAccount(null)); }, []); // 启动时静默检查更新 useEffect(() => { checkUpdate() .then((update) => { if (update?.available) { showToast(`🆕 发现新版本 v${update.version},前往「设置」页更新`); } }) .catch(() => {}); // 静默失败,不打扰用户 }, []); const handleLogout = async () => { await githubLogout(); qc.clear(); setAccount(null); }; const { data: spacesJson } = useSpacesSync(account !== null && account !== undefined); if (account === undefined) return null; if (account === null) { return (
); } return (
{page === "overview" && } {page === "dashboard" && } {page === "devtools" && } {page === "proxy" && } {page === "settings" && }
); }