打手端迁移至独立子域名

This commit is contained in:
yml2213
2026-08-16 16:08:38 +08:00
parent 8d07b06d52
commit bc2909d6f2
20 changed files with 173 additions and 52 deletions
+55 -12
View File
@@ -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">