legalgo-FE-reactrouter/app/routes/_admin.lg-admin.tsx

48 lines
1.1 KiB
TypeScript

import { Outlet, redirect } from 'react-router'
import { getStaff } from '~/apis/admin/get-staff'
import { AUTH_PAGES } from '~/configs/pages'
import { AdminProvider } from '~/contexts/admin'
import { AdminDefaultLayout } from '~/layouts/admin/default'
import { handleCookie } from '~/libs/cookies'
import type { Route } from './+types/_admin.lg-admin'
export const loader = async ({ request }: Route.LoaderArgs) => {
const { staffToken } = await handleCookie(request)
const { pathname } = new URL(request.url)
const isAuthPage = AUTH_PAGES.includes(pathname)
let adminData
if (!isAuthPage && !staffToken) {
throw redirect('/lg-admin/login')
}
if (isAuthPage && staffToken) {
throw redirect('/lg-admin')
}
if (staffToken) {
const { data } = await getStaff({
accessToken: staffToken,
})
adminData = data
}
return {
adminData,
}
}
const AdminLayout = () => {
return (
<AdminProvider>
<AdminDefaultLayout>
<Outlet />
</AdminDefaultLayout>
</AdminProvider>
)
}
export default AdminLayout