打手端迁移至独立子域名
This commit is contained in:
+55
-12
@@ -1,9 +1,19 @@
|
||||
import { Suspense, lazy } from 'react'
|
||||
import { Suspense, lazy, useEffect } from 'react'
|
||||
import { Spin } from 'antd'
|
||||
import { HashRouter, Navigate, Outlet, Route, Routes, useLocation } from 'react-router'
|
||||
import {
|
||||
BrowserRouter,
|
||||
HashRouter,
|
||||
Navigate,
|
||||
Outlet,
|
||||
Route,
|
||||
Routes,
|
||||
useLocation,
|
||||
} from 'react-router'
|
||||
|
||||
import { getAdminRole, hasAdminSession } from '@/utils/admin-auth'
|
||||
import { isWorkerSite, WORKER_SITE_ORIGIN } from '@/utils/site'
|
||||
import { hasWorkerSession } from '@/utils/worker-auth'
|
||||
import { resolveLegacyWorkerPath } from '@/utils/worker-routes'
|
||||
import AdminLayout from '@/layouts/AdminLayout'
|
||||
import WorkerLayout from '@/layouts/WorkerLayout'
|
||||
|
||||
@@ -63,13 +73,27 @@ function RequireWorker() {
|
||||
const location = useLocation()
|
||||
|
||||
if (!hasWorkerSession()) {
|
||||
return <Navigate to="/worker/login" replace state={{ from: location }} />
|
||||
return <Navigate to="/" replace state={{ from: location }} />
|
||||
}
|
||||
|
||||
return <Outlet />
|
||||
}
|
||||
|
||||
export default function App() {
|
||||
const legacyWorkerPath = resolveLegacyWorkerPath(window.location.hash)
|
||||
|
||||
if (legacyWorkerPath) {
|
||||
return <WorkerSiteRedirect path={legacyWorkerPath} />
|
||||
}
|
||||
|
||||
if (isWorkerSite()) {
|
||||
return <WorkerApplication />
|
||||
}
|
||||
|
||||
return <AdminApplication />
|
||||
}
|
||||
|
||||
function AdminApplication() {
|
||||
return (
|
||||
<HashRouter>
|
||||
<Suspense fallback={<RouteLoading />}>
|
||||
@@ -96,15 +120,6 @@ export default function App() {
|
||||
</Route>
|
||||
</Route>
|
||||
</Route>
|
||||
<Route path="/worker/login" element={<WorkerLoginPage />} />
|
||||
<Route element={<RequireWorker />}>
|
||||
<Route path="/worker" element={<WorkerLayout />}>
|
||||
<Route index element={<Navigate to="/worker/hall" replace />} />
|
||||
<Route path="hall" element={<WorkerHallPage />} />
|
||||
<Route path="orders" element={<WorkerOrdersPage />} />
|
||||
<Route path="profile" element={<WorkerProfilePage />} />
|
||||
</Route>
|
||||
</Route>
|
||||
<Route path="/claim/:token" element={<ClaimPage />} />
|
||||
<Route path="/collect" element={<CollectPage />} />
|
||||
<Route path="*" element={<NotFoundPage />} />
|
||||
@@ -114,6 +129,34 @@ export default function App() {
|
||||
)
|
||||
}
|
||||
|
||||
function WorkerApplication() {
|
||||
return (
|
||||
<BrowserRouter>
|
||||
<Suspense fallback={<RouteLoading />}>
|
||||
<Routes>
|
||||
<Route path="/" element={<WorkerLoginPage />} />
|
||||
<Route element={<RequireWorker />}>
|
||||
<Route element={<WorkerLayout />}>
|
||||
<Route path="hall" element={<WorkerHallPage />} />
|
||||
<Route path="orders" element={<WorkerOrdersPage />} />
|
||||
<Route path="profile" element={<WorkerProfilePage />} />
|
||||
</Route>
|
||||
</Route>
|
||||
<Route path="*" element={<Navigate to="/" replace />} />
|
||||
</Routes>
|
||||
</Suspense>
|
||||
</BrowserRouter>
|
||||
)
|
||||
}
|
||||
|
||||
function WorkerSiteRedirect({ path }: { path: string }) {
|
||||
useEffect(() => {
|
||||
window.location.replace(`${WORKER_SITE_ORIGIN}${path}`)
|
||||
}, [path])
|
||||
|
||||
return <RouteLoading />
|
||||
}
|
||||
|
||||
function RouteLoading() {
|
||||
return (
|
||||
<div className="route-loading">
|
||||
|
||||
Reference in New Issue
Block a user