diff options
author | Florian Dold <florian@dold.me> | 2023-11-16 10:42:05 +0100 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2023-11-16 10:42:05 +0100 |
commit | c5f63c097a6f7b07edfa7a481ac37ea45966d04a (patch) | |
tree | ef3f387f274b6f10e0f23160c3eb2900f64a262b /packages/taler-wallet-core/src/operations | |
parent | e4a1b373b018d7528828954ff8da96fe6b5f9728 (diff) | |
download | wallet-core-c5f63c097a6f7b07edfa7a481ac37ea45966d04a.tar.xz |
wallet-core: only hand out talerUri for push payments when the transaction is in the right state
Diffstat (limited to 'packages/taler-wallet-core/src/operations')
-rw-r--r-- | packages/taler-wallet-core/src/operations/transactions.ts | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/packages/taler-wallet-core/src/operations/transactions.ts b/packages/taler-wallet-core/src/operations/transactions.ts index a30120baa..7ee6275b0 100644 --- a/packages/taler-wallet-core/src/operations/transactions.ts +++ b/packages/taler-wallet-core/src/operations/transactions.ts @@ -66,6 +66,7 @@ import { } from "../db.js"; import { GetReadOnlyAccess, + PeerPushDebitStatus, timestampPreciseFromDb, timestampProtocolFromDb, WalletStoresV1, @@ -136,9 +137,9 @@ import { import { iterRecordsForDeposit, iterRecordsForPeerPullDebit, - iterRecordsForPeerPullInitiation, + iterRecordsForPeerPullInitiation as iterRecordsForPeerPullCredit, iterRecordsForPeerPushCredit, - iterRecordsForPeerPushInitiation, + iterRecordsForPeerPushInitiation as iterRecordsForPeerPushDebit, iterRecordsForPurchase, iterRecordsForRefresh, iterRecordsForRefund, @@ -463,6 +464,15 @@ function buildTransactionForPushPaymentDebit( contractTerms: PeerContractTerms, ort?: OperationRetryRecord, ): Transaction { + let talerUri: string | undefined = undefined; + switch (pi.status) { + case PeerPushDebitStatus.PendingReady: + case PeerPushDebitStatus.SuspendedReady: + talerUri = stringifyPayPushUri({ + exchangeBaseUrl: pi.exchangeBaseUrl, + contractPriv: pi.contractPriv, + }); + } return { type: TransactionType.PeerPushDebit, txState: computePeerPushDebitTransactionState(pi), @@ -475,10 +485,7 @@ function buildTransactionForPushPaymentDebit( summary: contractTerms.summary, }, timestamp: timestampPreciseFromDb(pi.timestampCreated), - talerUri: stringifyPayPushUri({ - exchangeBaseUrl: pi.exchangeBaseUrl, - contractPriv: pi.contractPriv, - }), + talerUri, transactionId: constructTransactionIdentifier({ tag: TransactionType.PeerPushDebit, pursePub: pi.pursePub, @@ -985,7 +992,7 @@ export async function getTransactions( x.refundGroups, ]) .runReadOnly(async (tx) => { - await iterRecordsForPeerPushInitiation(tx, filter, async (pi) => { + await iterRecordsForPeerPushDebit(tx, filter, async (pi) => { const amount = Amounts.parseOrThrow(pi.amount); if (shouldSkipCurrency(transactionsRequest, amount.currency)) { @@ -1073,7 +1080,7 @@ export async function getTransactions( ); }); - await iterRecordsForPeerPullInitiation(tx, filter, async (pi) => { + await iterRecordsForPeerPullCredit(tx, filter, async (pi) => { const currency = Amounts.currencyOf(pi.amount); if (shouldSkipCurrency(transactionsRequest, currency)) { return; |