summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2022-03-28 16:11:58 +0200
committerFlorian Dold <florian@dold.me>2022-03-28 16:11:58 +0200
commit2ba6692c6ad97285e852fb0b74a650e067817003 (patch)
tree2018071064c002f63aaed1928a0e0483830c6494 /packages/taler-wallet-core/src
parente89821a6c7f5b740ab5781354149dd2cc2b4047c (diff)
downloadwallet-core-2ba6692c6ad97285e852fb0b74a650e067817003.tar.gz
wallet-core-2ba6692c6ad97285e852fb0b74a650e067817003.tar.bz2
wallet-core-2ba6692c6ad97285e852fb0b74a650e067817003.zip
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/src')
-rw-r--r--packages/taler-wallet-core/src/operations/withdraw.ts31
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;
}