aboutsummaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2022-10-16 22:18:24 +0200
committerFlorian Dold <florian@dold.me>2022-10-16 22:18:24 +0200
commitb52b074a8dd119347307f1face35c1c60eb94c44 (patch)
treefb2f9597eaeb95f85c994949cfee0424307bb71e /packages
parent8d4a7d6103032a85c81240d9fb0de32dd44ec435 (diff)
wallet-core: show instructed amount as raw amount for withdrawal
Diffstat (limited to 'packages')
-rw-r--r--packages/taler-util/src/backup-types.ts2
-rw-r--r--packages/taler-wallet-cli/src/harness/harness.ts1
-rw-r--r--packages/taler-wallet-core/src/db.ts29
-rw-r--r--packages/taler-wallet-core/src/operations/backup/export.ts3
-rw-r--r--packages/taler-wallet-core/src/operations/backup/import.ts3
-rw-r--r--packages/taler-wallet-core/src/operations/transactions.ts8
-rw-r--r--packages/taler-wallet-core/src/operations/withdraw.ts2
7 files changed, 39 insertions, 9 deletions
diff --git a/packages/taler-util/src/backup-types.ts b/packages/taler-util/src/backup-types.ts
index 5d53f178e..b3eb082ea 100644
--- a/packages/taler-util/src/backup-types.ts
+++ b/packages/taler-util/src/backup-types.ts
@@ -333,6 +333,8 @@ export interface BackupWithdrawalGroup {
*/
raw_withdrawal_amount: BackupAmountString;
+ effective_withdrawal_amount: BackupAmountString;
+
/**
* Restrict withdrawals from this reserve to this age.
*/
diff --git a/packages/taler-wallet-cli/src/harness/harness.ts b/packages/taler-wallet-cli/src/harness/harness.ts
index a5b519ec3..ae2845655 100644
--- a/packages/taler-wallet-cli/src/harness/harness.ts
+++ b/packages/taler-wallet-cli/src/harness/harness.ts
@@ -1972,6 +1972,7 @@ export class WalletCli {
...this.timetravelArgArr,
"--wallet-db",
this.dbfile,
+ "advanced",
"run-pending",
],
);
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,