diff options
Diffstat (limited to 'packages/bank-ui/src/hooks/regional.ts')
-rw-r--r-- | packages/bank-ui/src/hooks/regional.ts | 29 |
1 files changed, 6 insertions, 23 deletions
diff --git a/packages/bank-ui/src/hooks/regional.ts b/packages/bank-ui/src/hooks/regional.ts index 274638f74..3e832a944 100644 --- a/packages/bank-ui/src/hooks/regional.ts +++ b/packages/bank-ui/src/hooks/regional.ts @@ -34,6 +34,7 @@ import { import { useState } from "preact/hooks"; import _useSWR, { SWRHook, mutate } from "swr"; import { useBankCoreApiContext } from "@gnu-taler/web-util/browser"; +import { buildPaginatedResult } from "./account.js"; // FIX default import https://github.com/microsoft/TypeScript/issues/49189 const useSWR = _useSWR as unknown as SWRHook; @@ -249,31 +250,13 @@ export function useBusinessAccounts() { keepPreviousData: true, }); - const isLastPage = - data && data.type === "ok" && data.body.accounts.length <= PAGE_SIZE; - const isFirstPage = !offset; + if (error) return error; + if (data === undefined) return undefined; + if (data.type !== "ok") return data; - const result = - data && data.type == "ok" ? structuredClone(data.body.accounts) : []; - if (result.length == PAGE_SIZE + 1) { - result.pop(); - } - const pagination = { - result, - isLastPage, - isFirstPage, - loadNext: () => { - if (!result.length) return; - setOffset(result[result.length - 1].row_id); - }, - loadFirst: () => { - setOffset(0); - }, - }; + //TODO: row_id should not be optional + return buildPaginatedResult(data.body.accounts, offset, setOffset, (d) => d.row_id ?? 0) - if (data) return { ok: true, data, ...pagination }; - if (error) return error; - return undefined; } type CashoutWithId = TalerCorebankApi.CashoutStatusResponse & { id: number }; |