taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit e9bdeb71b7e66d2fbbeab869b3115de88b626890
parent bc29fc73aed60c83b4e508754a40c1deed798cbd
Author: Florian Dold <florian@dold.me>
Date:   Mon, 25 Mar 2024 12:06:57 +0100

wallet-core: pass extended bank account info to UI

Also pre-sort accounts by priority

Diffstat:
Mpackages/taler-util/src/taler-types.ts | 9++++++++-
Mpackages/taler-util/src/wallet-types.ts | 10++++++++++
Mpackages/taler-wallet-core/src/withdraw.ts | 8++++++++
3 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/packages/taler-util/src/taler-types.ts b/packages/taler-util/src/taler-types.ts @@ -32,7 +32,6 @@ import { buildCodecForUnion, codecForAny, codecForBoolean, - codecForConstNumber, codecForConstString, codecForList, codecForMap, @@ -2305,6 +2304,12 @@ export interface ExchangeWireAccount { // a TALER_MasterWireDetailsPS // with purpose TALER_SIGNATURE_MASTER_WIRE_DETAILS. master_sig: EddsaSignatureString; + + // Display label wallets should use to show this + // bank account. + // Since protocol **v19**. + bank_label?: string; + priority?: number; } export const codecForExchangeWireAccount = (): Codec<ExchangeWireAccount> => @@ -2314,6 +2319,8 @@ export const codecForExchangeWireAccount = (): Codec<ExchangeWireAccount> => .property("debit_restrictions", codecForList(codecForAny())) .property("master_sig", codecForString()) .property("payto_uri", codecForString()) + .property("bank_label", codecOptional(codecForString())) + .property("priority", codecOptional(codecForNumber())) .build("WireAccount"); export type Integer = number; diff --git a/packages/taler-util/src/wallet-types.ts b/packages/taler-util/src/wallet-types.ts @@ -3020,6 +3020,16 @@ export interface WithdrawalExchangeAccountDetails { creditRestrictions?: AccountRestriction[]; /** + * Label given to the account or the account's bank by the exchange. + */ + bankLabel?: string; + + /* + * Display priority assigned to this bank account by the exchange. + */ + priority?: number; + + /** * Error that happened when attempting to request the conversion rate. */ conversionError?: TalerErrorDetail; diff --git a/packages/taler-wallet-core/src/withdraw.ts b/packages/taler-wallet-core/src/withdraw.ts @@ -2799,6 +2799,8 @@ async function fetchAccount( status: "ok", paytoUri, transferAmount, + bankLabel: acct.bank_label, + priority: acct.priority, currencySpecification, creditRestrictions: acct.credit_restrictions, }; @@ -2834,6 +2836,12 @@ async function fetchWithdrawalAccountInfo( ); withdrawalAccounts.push(acctInfo); } + withdrawalAccounts.sort((x1, x2) => { + // Accounts without priority come last. + const n1 = x1.priority ?? Number.MAX_SAFE_INTEGER; + const n2 = x2.priority ?? Number.MAX_SAFE_INTEGER; + return Math.sign(n1 - n2); + }); return withdrawalAccounts; }