aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2023-01-20 15:43:37 -0300
committerSebastian <sebasjm@gmail.com>2023-01-20 15:43:37 -0300
commit5f31dad2d3af80ab0f53cc52a8740f9a37ca0e75 (patch)
tree47c289ae7216360145cdf040abb4d3a8fff2d33c
parent7ea8321ddd2d56f43dceaa18340f1d1c39a83e76 (diff)
also merge refund when getting transactionById
-rw-r--r--packages/taler-wallet-core/src/operations/transactions.ts33
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,
);
});