fix: handle nullable ads data and ensure safe filtering in advertisements

This commit is contained in:
Ardeman 2025-04-23 13:29:03 +08:00
parent eedb155880
commit 7b4ea17a16
4 changed files with 10 additions and 8 deletions

View File

@ -11,7 +11,7 @@ const adResponseSchema = z.object({
clicked: z.number(),
})
const adsResponseSchema = z.object({
data: z.array(adResponseSchema),
data: z.array(adResponseSchema).nullable(),
})
export type TAdResponse = z.infer<typeof adResponseSchema>

View File

@ -111,7 +111,7 @@ export const AdvertisementsPage = () => {
</div>
<UiTable
data={dataTable}
data={dataTable || []}
columns={dataColumns}
slots={dataSlot}
title="Daftar Spanduk Iklan"

View File

@ -8,7 +8,7 @@ import type { Route } from './+types/_admin.lg-admin._dashboard.advertisements.u
export const loader = async ({ params }: Route.LoaderArgs) => {
const { data: adsData } = await getAds()
const { id } = params
const adData = adsData.find((ads) => ads.id === id)
const adData = adsData?.find((ads) => ads.id === id)
return { adData }
}

View File

@ -28,11 +28,13 @@ export const loader = async ({ request }: Route.LoaderArgs) => {
const { data: subscribePlanData } = await getSubscribePlan()
const { data: categoriesData } = await getCategories()
let { data: adsData } = await getAds()
adsData = adsData.filter(
if (adsData) {
adsData = adsData?.filter(
(ad) =>
new Date(ad.start_date) <= new Date() &&
new Date(ad.end_date) >= new Date(),
)
}
return {
userData,