import { Amounts, TalerError } from "@gnu-taler/taler-util"; import { useTranslationContext } from "@gnu-taler/web-util/browser"; import { Fragment, VNode, h } from "preact"; import { ErrorLoading } from "../../components/ErrorLoading.js"; import { Loading } from "../../components/Loading.js"; import { useBankCoreApiContext } from "../../context/config.js"; import { useBusinessAccounts } from "../../hooks/circuit.js"; import { RenderAmount } from "../PaytoWireTransferForm.js"; import { assertUnreachable } from "../WithdrawalOperationPage.js"; interface Props { onCreateAccount: () => void; onShowAccountDetails: (aid: string) => void; onRemoveAccount: (aid: string) => void; onUpdateAccountPassword: (aid: string) => void; onShowCashoutForAccount: (aid: string) => void; } export function AccountList({ onRemoveAccount, onShowAccountDetails, onUpdateAccountPassword, onShowCashoutForAccount, onCreateAccount }: Props): VNode { const result = useBusinessAccounts(); const { i18n } = useTranslationContext(); const { config } = useBankCoreApiContext() if (!result) { return } if (result instanceof TalerError) { return } if (result.data.type === "fail") { switch (result.data.case) { case "unauthorized": return default: assertUnreachable(result.data.case) } } const { accounts } = result.data.body; return

Accounts

A list of all business account in the bank.

{!accounts.length ? (
) : ( {accounts.map((item, idx) => { const balance = !item.balance ? undefined : Amounts.parse(item.balance.amount); const noBalance = Amounts.isZero(item.balance.amount) const balanceIsDebit = item.balance && item.balance.credit_debit_indicator == "debit"; return })}
{i18n.str`Username`} {i18n.str`Name`} {i18n.str`Balance`} {i18n.str`Actions`}
{ e.preventDefault(); onShowAccountDetails(item.username) }} > {item.username} {item.name} {!balance ? ( i18n.str`unknown` ) : ( )} { e.preventDefault(); onUpdateAccountPassword(item.username) }} > change password
{config.have_cashout ? { e.preventDefault(); onShowCashoutForAccount(item.username) }} > cashouts
: undefined} {noBalance ? { e.preventDefault(); onRemoveAccount(item.username) }} > remove : undefined}
)}
}