import { useEffect, useState } from "react"; import { api, clearToken, getToken } from "./api"; import Login from "./components/Login"; import ProductList from "./components/ProductList"; import ProductDetail from "./components/ProductDetail"; import SubmissionsPage from "./components/SubmissionsPage"; import ApiKeysPage from "./components/ApiKeysPage"; import CategoriesPage from "./components/CategoriesPage"; import BrandsPage from "./components/BrandsPage"; import StatsPage from "./components/StatsPage"; import AuditLogPage from "./components/AuditLogPage"; import { BarChart3, FolderTree, Inbox, KeyRound, LogOut, Package, ScrollText, Tag } from "lucide-react"; type Tab = | "overview" | "products" | "submissions" | "categories" | "brands" | "audit" | "keys"; type View = { name: "list" } | { name: "detail"; id: string }; export default function App() { const [authed, setAuthed] = useState(false); const [checking, setChecking] = useState(true); const [username, setUsername] = useState(""); const [tab, setTab] = useState("products"); const [pending, setPending] = useState(null); const [view, setView] = useState({ name: "list" }); useEffect(() => { if (!authed) return; api .listSubmissions("pending", 1, 1) .then((r) => setPending(r.pending)) .catch(() => undefined); }, [authed]); useEffect(() => { if (!getToken()) { setChecking(false); return; } api .me() .then((r) => { setUsername(r.username); setAuthed(true); }) .catch(() => clearToken()) .finally(() => setChecking(false)); }, []); function onLoggedIn(name: string) { setUsername(name); setAuthed(true); setView({ name: "list" }); } function logout() { clearToken(); setAuthed(false); setUsername(""); } if (checking) { return (
加载中…
); } if (!authed) return ; return (
天工商品档案公共仓 · 后台
{username}
{tab === "overview" ? ( ) : tab === "audit" ? ( ) : tab === "keys" ? ( ) : tab === "categories" ? ( ) : tab === "brands" ? ( ) : tab === "submissions" ? ( ) : view.name === "list" ? ( setView({ name: "detail", id })} /> ) : ( setView({ name: "list" })} /> )}
); }