aboutsummaryrefslogtreecommitdiff
path: root/packages/bank-ui/src/hooks/regional.ts
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2024-04-03 09:52:53 -0300
committerSebastian <sebasjm@gmail.com>2024-04-03 14:56:29 -0300
commit56da180423029a1b53d2be343eed4f073e96dc89 (patch)
treee8fd31dcc4c7bc6866b139de097c8f2c01f93597 /packages/bank-ui/src/hooks/regional.ts
parentc53c6b8b3c0a66f3862883ec1314c6d4bf68af32 (diff)
downloadwallet-core-56da180423029a1b53d2be343eed4f073e96dc89.tar.xz
wip #8655: updating paginated queries
Diffstat (limited to 'packages/bank-ui/src/hooks/regional.ts')
-rw-r--r--packages/bank-ui/src/hooks/regional.ts29
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 };