taler-typescript-core

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

commit 164b7d4e233b8d45419f66c0d737d26cfbb4ebaa
parent 19c75d414fe8427b4dc72f3021e23cf48017f249
Author: Florian Dold <florian@dold.me>
Date:   Mon,  9 Sep 2024 11:11:59 +0200

wallet-core: return talerBankHostnames in getDepositWireTypesForCurrency

Diffstat:
Mpackages/taler-util/src/types-taler-wallet.ts | 18++++++++++++++++++
Mpackages/taler-wallet-core/src/wallet.ts | 24++++++++++++++++++++++--
2 files changed, 40 insertions(+), 2 deletions(-)

diff --git a/packages/taler-util/src/types-taler-wallet.ts b/packages/taler-util/src/types-taler-wallet.ts @@ -3565,7 +3565,25 @@ export const codecForGetDepositWireTypesForCurrencyRequest = * enter their payment information. */ export interface GetDepositWireTypesForCurrencyResponse { + /** + * @deprecated, use wireTypeDetails instead. + */ wireTypes: string[]; + + /** + * Details for each wire type. + */ + wireTypeDetails: WireTypeDetails[]; +} + +export interface WireTypeDetails { + paymentTargetType: string; + + /** + * Allowed hostnames for the deposit payto URI. + * Only applicable to x-taler-bank. + */ + talerBankHostnames?: string[]; } export interface GetQrCodesForPaytoRequest { diff --git a/packages/taler-wallet-core/src/wallet.ts b/packages/taler-wallet-core/src/wallet.ts @@ -117,6 +117,7 @@ import { WalletCoreVersion, WalletNotification, WalletRunConfig, + WireTypeDetails, WithdrawTestBalanceRequest, canonicalizeBaseUrl, checkDbInvariant, @@ -1240,6 +1241,8 @@ async function handleGetDepositWireTypesForCurrency( req: GetDepositWireTypesForCurrencyRequest, ): Promise<GetDepositWireTypesForCurrencyResponse> { const wtSet: Set<string> = new Set(); + const wireTypeDetails: WireTypeDetails[] = []; + const talerBankHostnames: string[] = []; await wex.db.runReadOnlyTx( { storeNames: ["exchanges", "exchangeDetails"] }, async (tx) => { @@ -1261,19 +1264,36 @@ async function handleGetDepositWireTypesForCurrency( } } if (!usable) { - break; + continue; } const parsedPayto = parsePaytoUri(acc.payto_uri); if (!parsedPayto) { continue; } - wtSet.add(parsedPayto.targetType); + if ( + parsedPayto.isKnown && + parsedPayto.targetType === "x-taler-bank" + ) { + if (!talerBankHostnames.includes(parsedPayto.host)) { + talerBankHostnames.push(parsedPayto.host); + } + } + if (!wtSet.has(parsedPayto.targetType)) { + wtSet.add(parsedPayto.targetType); + wireTypeDetails.push({ + paymentTargetType: parsedPayto.targetType, + // Will possibly extended later by other exchanges + // with the same wire type. + talerBankHostnames, + }); + } } } }, ); return { wireTypes: [...wtSet], + wireTypeDetails, }; }