diff options
Diffstat (limited to 'packages/taler-wallet-core')
5 files changed, 18 insertions, 3 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/backup/import.ts b/packages/taler-wallet-core/src/operations/backup/import.ts index c7afaea8e..c94eb7eb6 100644 --- a/packages/taler-wallet-core/src/operations/backup/import.ts +++ b/packages/taler-wallet-core/src/operations/backup/import.ts @@ -199,7 +199,7 @@ async function getDenomSelStateFromBackup( return { selectedDenoms, totalCoinValue: Amounts.stringify(totalCoinValue), - totalWithdrawCost: Amounts.stringify(totalCoinValue), + totalWithdrawCost: Amounts.stringify(totalWithdrawCost), }; } 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 7fa2c075c..083b6618a 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, diff --git a/packages/taler-wallet-core/src/operations/withdraw.ts b/packages/taler-wallet-core/src/operations/withdraw.ts index f5cdde167..f7edfed91 100644 --- a/packages/taler-wallet-core/src/operations/withdraw.ts +++ b/packages/taler-wallet-core/src/operations/withdraw.ts @@ -225,7 +225,7 @@ export function selectWithdrawalDenominations( return { selectedDenoms, totalCoinValue: Amounts.stringify(totalCoinValue), - totalWithdrawCost: Amounts.stringify(totalCoinValue), + totalWithdrawCost: Amounts.stringify(totalWithdrawCost), }; } |