From 2dc84c582dfafab702af6c42e8bcbbf127b75b80 Mon Sep 17 00:00:00 2001 From: Ardeman Date: Wed, 19 Mar 2025 18:53:30 +0800 Subject: [PATCH] refactor: simplify loader implementation by removing clientLoader and streamlining data fetching --- app/pages/news/index.tsx | 6 ++---- app/routes/_news._index.tsx | 42 +++++++++++++------------------------ 2 files changed, 17 insertions(+), 31 deletions(-) diff --git a/app/pages/news/index.tsx b/app/pages/news/index.tsx index bb31758..1ee72e6 100644 --- a/app/pages/news/index.tsx +++ b/app/pages/news/index.tsx @@ -4,13 +4,11 @@ import { Card } from '~/components/ui/card' import { CarouselHero } from '~/components/ui/carousel-hero' import { CarouselSection } from '~/components/ui/carousel-section' import { Newsletter } from '~/components/ui/newsletter' -import { type clientLoader } from '~/routes/_news._index' +import { type loader } from '~/routes/_news._index' import type { TNews } from '~/types/news' export const NewsPage = () => { - const loaderData = useRouteLoaderData( - 'routes/_news._index', - ) + const loaderData = useRouteLoaderData('routes/_news._index') const spotlight: TNews = { title: loaderData?.spotlightCategory?.name || '', description: loaderData?.spotlightCategory?.description || '', diff --git a/app/routes/_news._index.tsx b/app/routes/_news._index.tsx index 0c69667..c2d806a 100644 --- a/app/routes/_news._index.tsx +++ b/app/routes/_news._index.tsx @@ -26,6 +26,21 @@ export const loader = async ({}: Route.LoaderArgs) => { (category) => category.code === kajianCode, ) + let { data: spotlightNews } = await getNews({ + categories: [spotlightCode], + }) + spotlightNews = spotlightNews.filter( + (news) => new Date(news.live_at) <= new Date(), + ) + let { data: beritaNews } = await getNews({ + categories: [beritaCode], + }) + beritaNews = beritaNews.filter((news) => new Date(news.live_at) <= new Date()) + let { data: kajianNews } = await getNews({ + categories: [kajianCode], + }) + kajianNews = kajianNews.filter((news) => new Date(news.live_at) <= new Date()) + return { spotlightCategory, spotlightCode, @@ -33,39 +48,12 @@ export const loader = async ({}: Route.LoaderArgs) => { beritaCode, kajianCategory, kajianCode, - } -} - -export const clientLoader = async ({ - serverLoader, -}: Route.ClientLoaderArgs) => { - const serverData = await serverLoader() - - let { data: spotlightNews } = await getNews({ - categories: [serverData.spotlightCode], - }) - spotlightNews = spotlightNews.filter( - (news) => new Date(news.live_at) <= new Date(), - ) - let { data: beritaNews } = await getNews({ - categories: [serverData.beritaCode], - }) - beritaNews = beritaNews.filter((news) => new Date(news.live_at) <= new Date()) - let { data: kajianNews } = await getNews({ - categories: [serverData.kajianCode], - }) - kajianNews = kajianNews.filter((news) => new Date(news.live_at) <= new Date()) - - return { - ...serverData, spotlightNews, beritaNews, kajianNews, } } -clientLoader.hydrate = true as const - export const HydrateFallback = () => { return (