import { BrowserRouter, Navigate, Route, Routes, useLocation } from 'react-router-dom' import { ConfigProvider, App as AntdApp, Spin } from 'antd' import zhCN from 'antd/locale/zh_CN' import { AuthProvider, useAuth } from './store/auth' import MainLayout from './layouts/MainLayout' import Login from './pages/Login' import Dashboard from './pages/Dashboard' import OpenApiDocs from './pages/OpenApiDocs' import ApiDebugger from './pages/ApiDebugger' import Delivery from './pages/Delivery' import MerchantCenter from './pages/MerchantCenter' import MerchantRecharge from './pages/MerchantRecharge' import AlertSettings from './pages/AlertSettings' import PlatformMerchants from './pages/PlatformMerchants' import PlatformUsers from './pages/PlatformUsers' import type { ReactNode } from 'react' function PrivateRoute({ children }: { children: ReactNode }) { const { token } = useAuth() if (!token) return return <>{children} } function AdminRoute({ children }: { children: ReactNode }) { const { isAdmin } = useAuth() if (!isAdmin) return return <>{children} } const tabPermissions: Record = { products: 'products:manage', orders: 'orders:manage', wallet: 'wallet:ledger', api: 'api:manage', callbacks: 'callbacks:manage', members: 'members:manage', } function MerchantPermissionRoute({ permission, children }: { permission?: string; children: ReactNode }) { const { isAdmin, merchantLoading, merchantPermissions } = useAuth() if (isAdmin || !permission) return <>{children} if (merchantLoading) { return
} return merchantPermissions.includes(permission) ? <>{children} : } function MerchantCenterRoute() { const location = useLocation() const requestedTab = new URLSearchParams(location.search).get('tab') || 'products' const tab = requestedTab in tabPermissions ? requestedTab : 'products' return ( ) } function AppRoutes() { return ( } /> } /> } > } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> ) } export default function App() { return ( ) }