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:
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,
};
}