diff options
Diffstat (limited to 'packages/taler-wallet-core')
5 files changed, 36 insertions, 9 deletions
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 @@ -1357,11 +1357,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. * @@ -1375,12 +1370,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. */ denomsSel: DenomSelectionState; 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, |