diff --git a/packages/taler-util/src/wallet-types.ts b/packages/taler-util/src/wallet-types.ts index 41b0d5574..d20eb5173 100644 --- a/packages/taler-util/src/wallet-types.ts +++ b/packages/taler-util/src/wallet-types.ts @@ -1134,6 +1134,13 @@ export interface ManualWithdrawalDetails { */ amountEffective: AmountString; + /** + * Number of coins that would be used for withdrawal. + * + * The UIs should warn if this number is too high (rougly at >100). + */ + numCoins: number; + /** * Ways to pay the exchange. */ diff --git a/packages/taler-wallet-core/src/wallet.ts b/packages/taler-wallet-core/src/wallet.ts index 6009ff096..da9445602 100644 --- a/packages/taler-wallet-core/src/wallet.ts +++ b/packages/taler-wallet-core/src/wallet.ts @@ -1107,12 +1107,17 @@ async function dispatchRequestInternal( Amounts.parseOrThrow(req.amount), req.restrictAge, ); + let numCoins = 0; + for (const x of wi.selectedDenoms.selectedDenoms) { + numCoins += x.count; + } const resp: ManualWithdrawalDetails = { amountRaw: req.amount, amountEffective: Amounts.stringify(wi.selectedDenoms.totalCoinValue), paytoUris: wi.exchangePaytoUris, tosAccepted: wi.termsOfServiceAccepted, ageRestrictionOptions: wi.ageRestrictionOptions, + numCoins, }; return resp; }