diff --git a/src/routes/transactions.tsx b/src/routes/transactions.tsx index 3738668..4d6a6a8 100644 --- a/src/routes/transactions.tsx +++ b/src/routes/transactions.tsx @@ -12,6 +12,14 @@ import { DebounceInput } from "react-debounce-input"; const PageSize = 30; +type Transaction = { + id: number; + date: string; + description: string; + value: number; + category: string; +}; + async function loader(page = 0, category: string | undefined = "") { const url = new URL("http://localhost:9000/transactions"); url.search = new URLSearchParams({ @@ -20,17 +28,15 @@ async function loader(page = 0, category: string | undefined = "") { ...(category !== "" && { category: category }), }).toString(); - return await fetch(url).then((response) => response.json()); + return await fetch(url).then(async (response) => { + console.log("Headers:", ...response.headers); + return { + transactions: (await response.json()) as Transaction[], + totalCount: response.headers.get("x-total-count"), + }; + }); } -type Transaction = { - id: number; - date: string; - description: string; - value: number; - category: string; -}; - const columnHelper = createColumnHelper(); const columns = [ @@ -70,12 +76,11 @@ export default function Transactions() { const table = useReactTable({ columns, - data, + data: data?.transactions ?? [], getCoreRowModel: getCoreRowModel(), manualPagination: true, manualFiltering: true, - // rowCount: , // TODO: get this from the server - pageCount: -1, + rowCount: data?.totalCount ? +data.totalCount : undefined, onPaginationChange: setPagination, onColumnFiltersChange: setColumnFilters, state: {