aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2023-01-18 17:31:34 -0300
committerSebastian <sebasjm@gmail.com>2023-01-18 17:31:34 -0300
commit4bd9b1ba79af12d5916e0ab308acd40935a813ec (patch)
tree9da351522da349cff152bd3d1df9d9b817455c3f
parent20b9e62aa1d9ae84ddcf8f36f60515021d3f9210 (diff)
downloadwallet-core-4bd9b1ba79af12d5916e0ab308acd40935a813ec.tar.xz
fix: missing total cost in peer pull payment
-rw-r--r--packages/taler-wallet-core/src/db.ts6
-rw-r--r--packages/taler-wallet-core/src/operations/pay-peer.ts7
-rw-r--r--packages/taler-wallet-core/src/operations/transactions.ts4
3 files changed, 16 insertions, 1 deletions
diff --git a/packages/taler-wallet-core/src/db.ts b/packages/taler-wallet-core/src/db.ts
index d2d01e100..72e9aff04 100644
--- a/packages/taler-wallet-core/src/db.ts
+++ b/packages/taler-wallet-core/src/db.ts
@@ -1864,6 +1864,12 @@ export interface PeerPullPaymentIncomingRecord {
* Status of the peer push payment incoming initiation.
*/
status: PeerPullPaymentIncomingStatus;
+
+ /**
+ * Total cost based on the coin selection.
+ * Non undefined after status === "Accepted"
+ */
+ totalCost: AmountString | undefined;
}
/**
diff --git a/packages/taler-wallet-core/src/operations/pay-peer.ts b/packages/taler-wallet-core/src/operations/pay-peer.ts
index 48434e452..7dc7b67fe 100644
--- a/packages/taler-wallet-core/src/operations/pay-peer.ts
+++ b/packages/taler-wallet-core/src/operations/pay-peer.ts
@@ -882,6 +882,11 @@ export async function acceptPeerPullPayment(
const sel = coinSelRes.result;
+ const totalAmount = await getTotalPeerPaymentCost(
+ ws,
+ coinSelRes.result.coins,
+ );
+
await ws.db
.mktx((x) => [
x.exchanges,
@@ -908,6 +913,7 @@ export async function acceptPeerPullPayment(
throw Error();
}
pi.status = PeerPullPaymentIncomingStatus.Accepted;
+ pi.totalCost = Amounts.stringify(totalAmount);
await tx.peerPullPaymentIncoming.put(pi);
});
@@ -995,6 +1001,7 @@ export async function checkPeerPullPayment(
timestampCreated: TalerProtocolTimestamp.now(),
contractTerms: dec.contractTerms,
status: PeerPullPaymentIncomingStatus.Proposed,
+ totalCost: undefined,
});
});
diff --git a/packages/taler-wallet-core/src/operations/transactions.ts b/packages/taler-wallet-core/src/operations/transactions.ts
index 58def0f34..b94617851 100644
--- a/packages/taler-wallet-core/src/operations/transactions.ts
+++ b/packages/taler-wallet-core/src/operations/transactions.ts
@@ -380,7 +380,9 @@ function buildTransactionForPullPaymentDebit(
): Transaction {
return {
type: TransactionType.PeerPullDebit,
- amountEffective: Amounts.stringify(pi.contractTerms.amount),
+ amountEffective: pi.totalCost
+ ? pi.totalCost
+ : Amounts.stringify(pi.contractTerms.amount),
amountRaw: Amounts.stringify(pi.contractTerms.amount),
exchangeBaseUrl: pi.exchangeBaseUrl,
frozen: false,