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 (
)
}