import React, { lazy, Suspense, useContext, useEffect } from 'react'; import { Route, Routes } from 'react-router-dom'; import Loading from './components/Loading'; import User from './pages/User'; import { PrivateRoute } from './components/PrivateRoute'; import RegisterForm from './components/RegisterForm'; import LoginForm from './components/LoginForm'; import NotFound from './pages/NotFound'; import Setting from './pages/Setting'; import EditUser from './pages/User/EditUser'; import AddUser from './pages/User/AddUser'; import { API, showError, showNotice } from './helpers'; import PasswordResetForm from './components/PasswordResetForm'; import GitHubOAuth from './components/GitHubOAuth'; import PasswordResetConfirm from './components/PasswordResetConfirm'; import { UserContext } from './context/User'; import { StatusContext } from './context/Status'; import Channel from './pages/Channel'; import Token from './pages/Token'; import EditToken from './pages/Token/EditToken'; import EditChannel from './pages/Channel/EditChannel'; import AddChannel from './pages/Channel/AddChannel'; const Home = lazy(() => import('./pages/Home')); const About = lazy(() => import('./pages/About')); function App() { const [userState, userDispatch] = useContext(UserContext); const [statusState, statusDispatch] = useContext(StatusContext); const loadUser = () => { let user = localStorage.getItem('user'); if (user) { let data = JSON.parse(user); userDispatch({ type: 'login', payload: data }); } }; const loadStatus = async () => { const res = await API.get('/api/status'); const { success, data } = res.data; if (success) { localStorage.setItem('status', JSON.stringify(data)); statusDispatch({ type: 'set', payload: data }); localStorage.setItem('footer_html', data.footer_html); if ( data.version !== process.env.REACT_APP_VERSION && data.version !== 'v0.0.0' && process.env.REACT_APP_VERSION !== '' ) { showNotice( `新版本可用:${data.version},请使用快捷键 Shift + F5 刷新页面` ); } } else { showError('无法正常连接至服务器!'); } }; useEffect(() => { loadUser(); loadStatus().then(); }, []); return ( }> } /> } /> }> } /> }> } /> } /> }> } /> }> } /> } /> }> } /> }> } /> }> } /> }> } /> }> } /> }> } /> }> } /> }> } /> }> } /> }> } /> ); } export default App;