diff options
author | Florian Dold <florian@dold.me> | 2022-03-28 16:11:58 +0200 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2022-03-28 16:11:58 +0200 |
commit | 2ba6692c6ad97285e852fb0b74a650e067817003 (patch) | |
tree | 2018071064c002f63aaed1928a0e0483830c6494 /packages/taler-wallet-core | |
parent | e89821a6c7f5b740ab5781354149dd2cc2b4047c (diff) |
fix fee discrepancy
The withdrawal call-to-action and withdrawal transaction details dialog
showed different fees, as the "overhead" for unwithdrawable amounts in a
reserve was not included in the withdrawal CTA.
The withdrawal CTA now shows the same fees as the transaction details.
Diffstat (limited to 'packages/taler-wallet-core')
-rw-r--r-- | packages/taler-wallet-core/src/operations/withdraw.ts | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/packages/taler-wallet-core/src/operations/withdraw.ts b/packages/taler-wallet-core/src/operations/withdraw.ts index 7685ede73..7997ab5be 100644 --- a/packages/taler-wallet-core/src/operations/withdraw.ts +++ b/packages/taler-wallet-core/src/operations/withdraw.ts @@ -43,6 +43,7 @@ import { Duration, TalerProtocolTimestamp, TransactionType, + AmountString, } from "@gnu-taler/taler-util"; import { CoinRecord, @@ -103,6 +104,8 @@ interface DenominationSelectionInfo { export interface ExchangeWithdrawDetails { /** * Exchange that the reserve will be created at. + * + * FIXME: Should be its own record. */ exchangeInfo: ExchangeRecord; @@ -119,16 +122,6 @@ export interface ExchangeWithdrawDetails { selectedDenoms: DenominationSelectionInfo; /** - * Fees for withdraw. - */ - withdrawFee: AmountJson; - - /** - * Remaining balance that is too small to be withdrawn. - */ - overhead: AmountJson; - - /** * Does the wallet know about an auditor for * the exchange that the reserve. */ @@ -177,6 +170,13 @@ export interface ExchangeWithdrawDetails { * Libtool-style version string for the wallet. */ walletVersion: string; + + withdrawalAmountRaw: AmountString; + + /** + * Amount that will actually be added to the wallet's balance. + */ + withdrawalAmountEffective: AmountString; } /** @@ -976,13 +976,16 @@ async function processWithdrawGroupImpl( export async function getExchangeWithdrawalInfo( ws: InternalWalletState, exchangeBaseUrl: string, - amount: AmountJson, + instructedAmount: AmountJson, ): Promise<ExchangeWithdrawDetails> { const { exchange, exchangeDetails } = await ws.exchangeOps.updateExchangeFromUrl(ws, exchangeBaseUrl); await updateWithdrawalDenoms(ws, exchangeBaseUrl); const denoms = await getCandidateWithdrawalDenoms(ws, exchangeBaseUrl); - const selectedDenoms = selectWithdrawalDenominations(amount, denoms); + const selectedDenoms = selectWithdrawalDenominations( + instructedAmount, + denoms, + ); const exchangeWireAccounts: string[] = []; for (const account of exchangeDetails.wireInfo.accounts) { exchangeWireAccounts.push(account.payto_uri); @@ -1061,14 +1064,14 @@ export async function getExchangeWithdrawalInfo( isAudited, isTrusted, numOfferedDenoms: possibleDenoms.length, - overhead: Amounts.sub(amount, selectedDenoms.totalWithdrawCost).amount, selectedDenoms, // FIXME: delete this field / replace by something we can display to the user trustedAuditorPubs: [], versionMatch, walletVersion: WALLET_EXCHANGE_PROTOCOL_VERSION, - withdrawFee, termsOfServiceAccepted: tosAccepted, + withdrawalAmountEffective: Amounts.stringify(selectedDenoms.totalCoinValue), + withdrawalAmountRaw: Amounts.stringify(instructedAmount), }; return ret; } |