diff options
author | Sebastian <sebasjm@gmail.com> | 2023-01-20 15:43:37 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2023-01-20 15:43:37 -0300 |
commit | 5f31dad2d3af80ab0f53cc52a8740f9a37ca0e75 (patch) | |
tree | 47c289ae7216360145cdf040abb4d3a8fff2d33c /packages/taler-wallet-core/src | |
parent | 7ea8321ddd2d56f43dceaa18340f1d1c39a83e76 (diff) | |
download | wallet-core-5f31dad2d3af80ab0f53cc52a8740f9a37ca0e75.tar.xz |
also merge refund when getting transactionById
Diffstat (limited to 'packages/taler-wallet-core/src')
-rw-r--r-- | packages/taler-wallet-core/src/operations/transactions.ts | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/packages/taler-wallet-core/src/operations/transactions.ts b/packages/taler-wallet-core/src/operations/transactions.ts index 083b6618a..9951fd6b2 100644 --- a/packages/taler-wallet-core/src/operations/transactions.ts +++ b/packages/taler-wallet-core/src/operations/transactions.ts @@ -286,11 +286,6 @@ export async function getTransactionById( const purchase = await tx.purchases.get(proposalId); if (!purchase) throw Error("not found"); - const theRefund = Object.values(purchase.refunds).find( - (r) => `${r.executionTime.t_s}` === executionTimeStr, - ); - if (!theRefund) throw Error("not found"); - const t = await tx.tombstones.get( makeTombstoneId( TombstoneTag.DeleteRefund, @@ -299,17 +294,41 @@ export async function getTransactionById( ), ); if (t) throw Error("deleted"); + + const filteredRefunds = await Promise.all( + Object.values(purchase.refunds).map(async (r) => { + const t = await tx.tombstones.get( + makeTombstoneId( + TombstoneTag.DeleteRefund, + purchase.proposalId, + `${r.executionTime.t_s}`, + ), + ); + if (!t) return r; + return undefined; + }), + ); + + const cleanRefunds = filteredRefunds.filter( + (x): x is WalletRefundItem => !!x, + ); + const download = await expectProposalDownload(ws, purchase, tx); const contractData = download.contractData; const refunds = mergeRefundByExecutionTime( - [theRefund], + cleanRefunds, Amounts.zeroOfAmount(contractData.amount), ); + const theRefund = refunds.find( + (r) => `${r.executionTime.t_s}` === executionTimeStr, + ); + if (!theRefund) throw Error("not found"); + return buildTransactionForRefund( purchase, contractData, - refunds[0], + theRefund, undefined, ); }); |