diff options
Diffstat (limited to 'packages/demobank-ui/src/components/Transactions/state.ts')
-rw-r--r-- | packages/demobank-ui/src/components/Transactions/state.ts | 108 |
1 files changed, 55 insertions, 53 deletions
diff --git a/packages/demobank-ui/src/components/Transactions/state.ts b/packages/demobank-ui/src/components/Transactions/state.ts index 9e1bce39b..198ef6c5f 100644 --- a/packages/demobank-ui/src/components/Transactions/state.ts +++ b/packages/demobank-ui/src/components/Transactions/state.ts @@ -18,21 +18,19 @@ import { AbsoluteTime, Amounts } from "@gnu-taler/taler-util"; import { useTransactions } from "../../hooks/access.js"; import { Props, State, Transaction } from "./index.js"; -export function useComponentState({ - account, -}: Props): State { - const result = useTransactions(account) +export function useComponentState({ account }: Props): State { + const result = useTransactions(account); if (result.loading) { return { status: "loading", - error: undefined - } + error: undefined, + }; } if (!result.ok) { return { status: "loading-error", - error: result - } + error: result, + }; } // if (error) { // switch (error.status) { @@ -73,53 +71,57 @@ export function useComponentState({ // }; // } - const transactions = result.data.transactions.map((item: unknown) => { - if ( - !item || - typeof item !== "object" || - !("direction" in item) || - !("creditorIban" in item) || - !("debtorIban" in item) || - !("date" in item) || - !("subject" in item) || - !("currency" in item) || - !("amount" in item) - ) { - //not valid - return; - } - const anyItem = item as any; - if ( - !(typeof anyItem.creditorIban === "string") || - !(typeof anyItem.debtorIban === "string") || - !(typeof anyItem.date === "string") || - !(typeof anyItem.subject === "string") || - !(typeof anyItem.currency === "string") || - !(typeof anyItem.amount === "string") - ) { - return; - } + const transactions = result.data.transactions + .map((item: unknown) => { + if ( + !item || + typeof item !== "object" || + !("direction" in item) || + !("creditorIban" in item) || + !("debtorIban" in item) || + !("date" in item) || + !("subject" in item) || + !("currency" in item) || + !("amount" in item) + ) { + //not valid + return; + } + const anyItem = item as any; + if ( + !(typeof anyItem.creditorIban === "string") || + !(typeof anyItem.debtorIban === "string") || + !(typeof anyItem.date === "string") || + !(typeof anyItem.subject === "string") || + !(typeof anyItem.currency === "string") || + !(typeof anyItem.amount === "string") + ) { + return; + } - const negative = anyItem.direction === "DBIT"; - const counterpart = negative ? anyItem.creditorIban : anyItem.debtorIban; + const negative = anyItem.direction === "DBIT"; + const counterpart = negative ? anyItem.creditorIban : anyItem.debtorIban; - let date = anyItem.date ? parseInt(anyItem.date, 10) : 0 - if (isNaN(date) || !isFinite(date)) { - date = 0 - } - const when: AbsoluteTime = !date ? AbsoluteTime.never() : { - t_ms: date, - }; - const amount = Amounts.parse(`${anyItem.currency}:${anyItem.amount}`); - const subject = anyItem.subject; - return { - negative, - counterpart, - when, - amount, - subject, - }; - }).filter((x): x is Transaction => x !== undefined); + let date = anyItem.date ? parseInt(anyItem.date, 10) : 0; + if (isNaN(date) || !isFinite(date)) { + date = 0; + } + const when: AbsoluteTime = !date + ? AbsoluteTime.never() + : { + t_ms: date, + }; + const amount = Amounts.parse(`${anyItem.currency}:${anyItem.amount}`); + const subject = anyItem.subject; + return { + negative, + counterpart, + when, + amount, + subject, + }; + }) + .filter((x): x is Transaction => x !== undefined); return { status: "ready", |