"use client" import { trpc } from "@/lib/trpc/client" import LoadingSpinner from "@/components/LoadingSpinner" import Grids from "@/components/TempDesignSystem/Grids" import ListContainer from "../ListContainer" import ShowMoreButton from "../ShowMoreButton" import StayCard from "../StayCard" import type { PreviousStaysClientProps, PreviousStaysNonNullResponseObject, } from "@/types/components/myPages/stays/previous" export default function ClientPreviousStays({ initialPreviousStays, }: PreviousStaysClientProps) { const { data, isFetching, fetchNextPage, hasNextPage, isLoading } = trpc.user.stays.previous.useInfiniteQuery( { limit: 6, }, { getNextPageParam: (lastPage) => { return lastPage?.nextCursor }, initialData: { pageParams: [undefined, 1], pages: [initialPreviousStays], }, } ) function loadMoreData() { if (hasNextPage) { fetchNextPage() } } // TS having a hard time with the filtered type. // This is only temporary as we will not return null // later on when we handle errors appropriately. const filteredStays = (data?.pages.filter((page) => page?.data) ?? []) as unknown as PreviousStaysNonNullResponseObject[] const stays = filteredStays.flatMap((page) => page.data) return isLoading ? ( ) : ( {stays.map((stay) => ( ))} {hasNextPage ? ( ) : null} ) }