also merge refund when getting transactionById

This commit is contained in:
Sebastian 2023-01-20 15:43:37 -03:00
parent 7ea8321ddd
commit 5f31dad2d3
No known key found for this signature in database
GPG Key ID: BE4FF68352439FC1

View File

@ -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,
);
});