"use client" import { trpc } from "@/lib/trpc/client" import { Reward } from "@/server/routers/contentstack/reward/output" import LoadingSpinner from "@/components/LoadingSpinner" import Grids from "@/components/TempDesignSystem/Grids" import ShowMoreButton from "@/components/TempDesignSystem/ShowMoreButton" import Title from "@/components/TempDesignSystem/Text/Title" import useLang from "@/hooks/useLang" import styles from "./current.module.css" type CurrentRewardsClientProps = { initialCurrentRewards: { rewards: Reward[]; nextCursor: number | undefined } } export default function ClientCurrentRewards({ initialCurrentRewards, }: CurrentRewardsClientProps) { const lang = useLang() const { data, isFetching, fetchNextPage, hasNextPage, isLoading } = trpc.contentstack.rewards.current.useInfiniteQuery( { limit: 3, lang, }, { getNextPageParam: (lastPage) => lastPage?.nextCursor, initialData: { pageParams: [undefined, 1], pages: [initialCurrentRewards], }, } ) function loadMoreData() { if (hasNextPage) { fetchNextPage() } } const filteredRewards = data?.pages.filter((page) => page && page.rewards) ?? [] const rewards = filteredRewards.flatMap((page) => page?.rewards) as Reward[] return isLoading ? ( ) : rewards.length ? (
{rewards.map((reward, idx) => (
{reward.label}
))}
{hasNextPage ? ( isFetching ? ( ) : ( ) ) : null}
) : null }