import { lazy, Suspense, useEffect } from 'react'
import { App as AntdApp, ConfigProvider, Skeleton } from 'antd'
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
import { BrowserRouter, Navigate, Route, Routes, useLocation, useNavigate } from 'react-router-dom'
import zhCN from 'antd/locale/zh_CN'
import { useAuthStore } from '../stores/auth'
const LoginPage = lazy(() => import('../pages/LoginPage'))
const DashboardPage = lazy(() => import('../pages/DashboardPage'))
const AccountPage = lazy(() => import('../pages/AccountPage'))
const UsersPage = lazy(() => import('../pages/UsersPage'))
const SsoCallbackPage = lazy(() => import('../pages/SsoCallbackPage'))
const SsoBindPage = lazy(() => import('../pages/SsoBindPage'))
const AppShell = lazy(() => import('../layout/AppShell'))
const queryClient = new QueryClient({
defaultOptions: {
queries: {
staleTime: 30_000,
retry: 1,
refetchOnWindowFocus: false,
},
},
})
function ProtectedRoute() {
const token = useAuthStore((state) => state.token)
const location = useLocation()
if (!token) return
return
}
function SessionExpiryBridge() {
const navigate = useNavigate()
useEffect(() => {
const onExpired = () => navigate(`/login?redirect=${encodeURIComponent(location.pathname + location.search + location.hash)}`, { replace: true })
window.addEventListener('mingxu-session-expired', onExpired)
return () => window.removeEventListener('mingxu-session-expired', onExpired)
}, [navigate])
return null
}
function AppRoutes() {
return (
}>
} />
} />
} />
}>
} />
} />
} />
} />
} />
)
}
export default function App() {
return (
)
}