2025-01-31 19:34:22 +08:00
|
|
|
import { Outlet } from 'react-router'
|
|
|
|
|
|
2025-03-02 12:06:30 +08:00
|
|
|
import { getCategories } from '~/apis/common/get-categories'
|
2025-03-02 01:20:18 +08:00
|
|
|
import { getSubscriptions } from '~/apis/common/get-subscriptions'
|
2025-03-02 16:36:03 +08:00
|
|
|
import { getUser } from '~/apis/news/get-user'
|
2025-02-22 17:34:25 +08:00
|
|
|
import { NewsProvider } from '~/contexts/news'
|
|
|
|
|
import { NewsDefaultLayout } from '~/layouts/news/default'
|
2025-02-27 19:37:31 +08:00
|
|
|
import { handleCookie } from '~/libs/cookies'
|
|
|
|
|
|
2025-02-28 11:49:51 +08:00
|
|
|
import type { Route } from './+types/_layout'
|
2025-02-27 19:37:31 +08:00
|
|
|
|
|
|
|
|
export const loader = async ({ request }: Route.LoaderArgs) => {
|
|
|
|
|
const { userToken } = await handleCookie(request)
|
2025-03-02 16:36:03 +08:00
|
|
|
let userData
|
|
|
|
|
if (userToken) {
|
|
|
|
|
const { data } = await getUser({
|
|
|
|
|
accessToken: userToken,
|
|
|
|
|
})
|
|
|
|
|
userData = data
|
|
|
|
|
}
|
2025-03-02 01:20:18 +08:00
|
|
|
const { data: subscriptionsData } = await getSubscriptions()
|
2025-03-02 12:06:30 +08:00
|
|
|
const { data: categoriesData } = await getCategories()
|
2025-02-27 19:37:31 +08:00
|
|
|
|
|
|
|
|
return {
|
2025-03-02 16:36:03 +08:00
|
|
|
userData,
|
2025-03-02 01:20:18 +08:00
|
|
|
subscriptionsData,
|
2025-03-02 12:06:30 +08:00
|
|
|
categoriesData,
|
2025-02-27 19:37:31 +08:00
|
|
|
}
|
|
|
|
|
}
|
2025-01-31 19:34:22 +08:00
|
|
|
|
|
|
|
|
const NewsLayout = () => {
|
|
|
|
|
return (
|
2025-02-22 17:34:25 +08:00
|
|
|
<NewsProvider>
|
|
|
|
|
<NewsDefaultLayout>
|
2025-02-03 17:01:56 +08:00
|
|
|
<Outlet />
|
2025-02-22 17:34:25 +08:00
|
|
|
</NewsDefaultLayout>
|
|
|
|
|
</NewsProvider>
|
2025-01-31 19:34:22 +08:00
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default NewsLayout
|