From b52b074a8dd119347307f1face35c1c60eb94c44 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Sun, 16 Oct 2022 22:18:24 +0200 Subject: wallet-core: show instructed amount as raw amount for withdrawal --- packages/taler-wallet-core/src/db.ts | 29 ++++++++++++++++++---- .../src/operations/backup/export.ts | 3 +++ .../src/operations/backup/import.ts | 3 +++ .../src/operations/transactions.ts | 8 +++--- .../taler-wallet-core/src/operations/withdraw.ts | 2 ++ 5 files changed, 36 insertions(+), 9 deletions(-) (limited to 'packages/taler-wallet-core/src') diff --git a/packages/taler-wallet-core/src/db.ts b/packages/taler-wallet-core/src/db.ts index aa74e327f..258096433 100644 --- a/packages/taler-wallet-core/src/db.ts +++ b/packages/taler-wallet-core/src/db.ts @@ -1356,11 +1356,6 @@ export interface WithdrawalGroupRecord { */ status: WithdrawalGroupStatus; - /** - * Amount that was sent by the user to fund the reserve. - */ - instructedAmount: AmountJson; - /** * Wire information (as payto URI) for the bank account that * transferred funds for this reserve. @@ -1374,12 +1369,36 @@ export interface WithdrawalGroupRecord { */ restrictAge?: number; + /** + * Amount that was sent by the user to fund the reserve. + */ + instructedAmount: AmountJson; + + /** + * Amount that was observed when querying the reserve that + * we are withdrawing from. + * + * Useful for diagnostics. + */ + reserveBalanceAmount?: AmountJson; + /** * Amount including fees (i.e. the amount subtracted from the * reserve to withdraw all coins in this withdrawal session). + * + * (Initial amount confirmed by the user, might differ with denomSel + * on reselection.) */ rawWithdrawalAmount: AmountJson; + /** + * Amount that will be added to the balance when the withdrawal succeeds. + * + * (Initial amount confirmed by the user, might differ with denomSel + * on reselection.) + */ + effectiveWithdrawalAmount: AmountJson; + /** * Denominations selected for withdrawal. */ diff --git a/packages/taler-wallet-core/src/operations/backup/export.ts b/packages/taler-wallet-core/src/operations/backup/export.ts index b0f1d6ce1..59b862d70 100644 --- a/packages/taler-wallet-core/src/operations/backup/export.ts +++ b/packages/taler-wallet-core/src/operations/backup/export.ts @@ -166,6 +166,9 @@ export async function exportBackup( secret_seed: wg.secretSeed, exchange_base_url: wg.exchangeBaseUrl, instructed_amount: Amounts.stringify(wg.instructedAmount), + effective_withdrawal_amount: Amounts.stringify( + wg.effectiveWithdrawalAmount, + ), reserve_priv: wg.reservePriv, restrict_age: wg.restrictAge, // FIXME: proper status conversion! diff --git a/packages/taler-wallet-core/src/operations/backup/import.ts b/packages/taler-wallet-core/src/operations/backup/import.ts index f08d152a5..995ae1091 100644 --- a/packages/taler-wallet-core/src/operations/backup/import.ts +++ b/packages/taler-wallet-core/src/operations/backup/import.ts @@ -556,6 +556,9 @@ export async function importBackup( rawWithdrawalAmount: Amounts.parseOrThrow( backupWg.raw_withdrawal_amount, ), + effectiveWithdrawalAmount: Amounts.parseOrThrow( + backupWg.effective_withdrawal_amount, + ), reservePriv: backupWg.reserve_priv, reservePub, status: backupWg.timestamp_finish diff --git a/packages/taler-wallet-core/src/operations/transactions.ts b/packages/taler-wallet-core/src/operations/transactions.ts index 1e7f982bc..b9f8dfdc6 100644 --- a/packages/taler-wallet-core/src/operations/transactions.ts +++ b/packages/taler-wallet-core/src/operations/transactions.ts @@ -379,7 +379,7 @@ function buildTransactionForPullPaymentCredit( return { type: TransactionType.PeerPullCredit, amountEffective: Amounts.stringify(wsr.denomsSel.totalCoinValue), - amountRaw: Amounts.stringify(wsr.rawWithdrawalAmount), + amountRaw: Amounts.stringify(wsr.instructedAmount), exchangeBaseUrl: wsr.exchangeBaseUrl, pending: !wsr.timestampFinish, timestamp: wsr.timestampStart, @@ -409,7 +409,7 @@ function buildTransactionForPushPaymentCredit( return { type: TransactionType.PeerPushCredit, amountEffective: Amounts.stringify(wsr.denomsSel.totalCoinValue), - amountRaw: Amounts.stringify(wsr.rawWithdrawalAmount), + amountRaw: Amounts.stringify(wsr.instructedAmount), exchangeBaseUrl: wsr.exchangeBaseUrl, info: { expiration: wsr.wgInfo.contractTerms.purse_expiration, @@ -436,7 +436,7 @@ function buildTransactionForBankIntegratedWithdraw( return { type: TransactionType.Withdrawal, amountEffective: Amounts.stringify(wsr.denomsSel.totalCoinValue), - amountRaw: Amounts.stringify(wsr.rawWithdrawalAmount), + amountRaw: Amounts.stringify(wsr.instructedAmount), withdrawalDetails: { type: WithdrawalType.TalerBankIntegrationApi, confirmed: wsr.wgInfo.bankInfo.timestampBankConfirmed ? true : false, @@ -477,7 +477,7 @@ function buildTransactionForManualWithdraw( amountEffective: Amounts.stringify( withdrawalGroup.denomsSel.totalCoinValue, ), - amountRaw: Amounts.stringify(withdrawalGroup.rawWithdrawalAmount), + amountRaw: Amounts.stringify(withdrawalGroup.instructedAmount), withdrawalDetails: { type: WithdrawalType.ManualTransfer, reservePub: withdrawalGroup.reservePub, diff --git a/packages/taler-wallet-core/src/operations/withdraw.ts b/packages/taler-wallet-core/src/operations/withdraw.ts index 59863101a..6be7c7614 100644 --- a/packages/taler-wallet-core/src/operations/withdraw.ts +++ b/packages/taler-wallet-core/src/operations/withdraw.ts @@ -932,6 +932,7 @@ async function queryReserve( return; } wg.status = WithdrawalGroupStatus.Ready; + wg.reserveBalanceAmount = Amounts.parse(result.response.balance); await tx.withdrawalGroups.put(wg); }); @@ -1700,6 +1701,7 @@ export async function internalCreateWithdrawalGroup( instructedAmount: amount, timestampStart: now, rawWithdrawalAmount: initialDenomSel.totalWithdrawCost, + effectiveWithdrawalAmount: initialDenomSel.totalCoinValue, secretSeed, reservePriv: reserveKeyPair.priv, reservePub: reserveKeyPair.pub, -- cgit v1.2.3