"use client" import { dt } from "@/lib/dt" import { _ } from "@/lib/translation" import { trpc } from "@/lib/trpc/client" import Button from "@/components/TempDesignSystem/Button" import styles from "./earnAndBurn.module.css" import { EarnAndBurnProps, Page, RowProps, } from "@/types/components/myPages/myPage/earnAndBurn" const tableHeadings = [ _("Arrival date"), _("Description"), _("Booking number"), _("Transaction date"), _("Points"), ] function EarnAndBurn({ lang }: EarnAndBurnProps) { const { data, hasNextPage, isFetching, fetchNextPage } = trpc.user.transaction.friendTransactions.useInfiniteQuery( { limit: 5 }, { getNextPageParam: (lastPage: Page) => lastPage.nextCursor, } ) function loadMoreData() { if (hasNextPage) { fetchNextPage() } } const transactions = data?.pages.flatMap((page) => page.data) ?? [] return transactions.length ? (
{tableHeadings.map((heading) => ( ))} {transactions.map((transaction) => ( ))}
{heading}
{/* TODO: add once pagination is available through API */} {/* */}
) : (
{tableHeadings.map((heading) => ( ))}
{heading}
{_("No transactions available")}
) } function Row({ transaction, lang }: RowProps) { const description = transaction.hotelName && transaction.city ? `${_(transaction.hotelName)}, ${transaction.city} ${transaction.nights} ${_("nights")}` : `${transaction.nights} ${_("nights")}` const arrival = dt(transaction.checkinDate).locale(lang).format("DD MMM YYYY") const departure = dt(transaction.checkoutDate) .locale(lang) .format("DD MMM YYYY") const values = [ arrival, description, transaction.confirmationNumber, departure, transaction.awardPoints, ] return ( {values.map((value, idx) => ( {value} ))} ) } export default EarnAndBurn