import { isRouteErrorResponse } from 'react-router' import { getCategories } from '~/apis/common/get-categories' import { getNews } from '~/apis/common/get-news' import { NewsPage } from '~/pages/news' import type { Route } from './+types/_news._index' export const loader = async ({}: Route.LoaderArgs) => { const { data: categoriesData } = await getCategories() const spotlightCode = 'spotlight' const spotlightCategory = categoriesData.find( (category) => category.code === spotlightCode, ) const beritaCode = 'berita' const beritaCategory = categoriesData.find( (category) => category.code === beritaCode, ) const kajianCode = 'kajian' const kajianCategory = categoriesData.find( (category) => category.code === kajianCode, ) return { spotlightCategory, spotlightCode, beritaCategory, 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
{details}
{stack && (
{stack}
)}