feat: Integrate SetupCheck component for improved setup validation in routing

This commit is contained in:
CaIon
2025-04-08 17:31:46 +08:00
parent aa34c3035a
commit 5813ca780f
3 changed files with 23 additions and 7 deletions

View File

@@ -26,6 +26,7 @@ import Playground from './pages/Playground/Playground.js';
import OAuth2Callback from "./components/OAuth2Callback.js"; import OAuth2Callback from "./components/OAuth2Callback.js";
import PersonalSetting from './components/PersonalSetting.js'; import PersonalSetting from './components/PersonalSetting.js';
import Setup from './pages/Setup/index.js'; import Setup from './pages/Setup/index.js';
import SetupCheck from './components/SetupCheck';
const Home = lazy(() => import('./pages/Home')); const Home = lazy(() => import('./pages/Home'));
const Detail = lazy(() => import('./pages/Detail')); const Detail = lazy(() => import('./pages/Detail'));
@@ -35,7 +36,7 @@ function App() {
const location = useLocation(); const location = useLocation();
return ( return (
<> <SetupCheck>
<Routes> <Routes>
<Route <Route
path='/' path='/'
@@ -286,7 +287,7 @@ function App() {
/> />
<Route path='*' element={<NotFound />} /> <Route path='*' element={<NotFound />} />
</Routes> </Routes>
</> </SetupCheck>
); );
} }

View File

@@ -0,0 +1,18 @@
import React, { useContext, useEffect } from 'react';
import { Navigate, useLocation } from 'react-router-dom';
import { StatusContext } from '../context/Status';
const SetupCheck = ({ children }) => {
const [statusState] = useContext(StatusContext);
const location = useLocation();
useEffect(() => {
if (statusState?.status?.setup === false && location.pathname !== '/setup') {
window.location.href = '/setup';
}
}, [statusState?.status?.setup, location.pathname]);
return children;
};
export default SetupCheck;

View File

@@ -66,13 +66,9 @@ const Home = () => {
}; };
useEffect(() => { useEffect(() => {
if (statusState.status?.setup === false) {
window.location.href = '/setup';
return;
}
displayNotice().then(); displayNotice().then();
displayHomePageContent().then(); displayHomePageContent().then();
}); }, []);
return ( return (
<> <>
@@ -116,6 +112,7 @@ const Home = () => {
https://github.com/Calcium-Ion/new-api https://github.com/Calcium-Ion/new-api
</a> </a>
</p> </p>
<p> <p>
{t('协议')} {t('协议')}
<a <a