import { useState, useEffect } from 'react'; import { Box } from '@mui/material'; import type { PageType } from '@/types/storage'; import { storageUtil } from '@/utils/chromeStorage'; import TimestampPage from './pages/TimestampPage'; import StorageCleanerPage from './pages/StorageCleanerPage'; import './App.css'; const PAGE_CONFIG = { timestamp: { label: '时间戳', defaultVisible: true }, storageCleaner: { label: '存储清理', defaultVisible: true }, } as const satisfies Record; function App() { const [currentPage, setCurrentPage] = useState('timestamp'); const [visiblePages, setVisiblePages] = useState(['timestamp', 'storageCleaner']); const [isLoaded, setIsLoaded] = useState(false); useEffect(() => { loadInitialData(); }, []); useEffect(() => { if (isLoaded) { storageUtil.set('app/currentRoute', currentPage); } }, [currentPage, isLoaded]); const loadInitialData = async () => { try { const [savedRoute, savedVisiblePages] = await Promise.all([ storageUtil.get('app/currentRoute', 'timestamp'), storageUtil.get('app/visiblePages', ['timestamp', 'storageCleaner'] as PageType[]), ]); if (savedRoute) { setCurrentPage(savedRoute); } if (savedVisiblePages) { setVisiblePages(savedVisiblePages); } } catch (error) { console.error('Failed to load initial data:', error); } finally { setIsLoaded(true); } }; const handlePageChange = (page: PageType) => { setCurrentPage(page); }; const NavButton = ({ pageKey }: { pageKey: PageType }) => { const config = PAGE_CONFIG[pageKey]; if (!config) return null; return ( ); }; if (!isLoaded) { return
Loading...
; } return (
{(Object.keys(PAGE_CONFIG) as PageType[]) .filter((key) => visiblePages.includes(key)) .map((key) => )} {currentPage === 'timestamp' && } {currentPage === 'storageCleaner' && }
); } export default App;