"use client" import { dt } from "@/lib/dt" import { _ } from "@/lib/translation" import { trpc } from "@/lib/trpc/client" import Header from "@/components/MyPages/Blocks/Header" import Button from "@/components/TempDesignSystem/Button" import styles from "./earnAndBurn.module.css" import { AccountPageComponentProps } from "@/types/components/myPages/myPage/accountPage" import { Page, RowProps } from "@/types/components/myPages/myPage/earnAndBurn" const tableHeadings = [ _("Arrival date"), _("Description"), _("Booking number"), _("Transaction date"), _("Points"), ] function EarnAndBurn({ lang, title, subtitle, link, }: AccountPageComponentProps) { 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 ? ( transactions.map((transaction) => ( )) ) : ( )}
{_("Transactions")} {_("Points")}
{dt(transaction.checkinDate) .locale(lang) .format("DD MMM YYYY")} {transaction.hotelName && transaction.city ? ( {`${transaction.hotelName}, ${transaction.city}`} ) : null} {`${transaction.nights} ${_(transaction.nights === 1 ? "night" : "nights")}`} {`${transaction.awardPoints} P`}
Empty
{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