gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-wallet-core] branch master updated: workaround: Failed transactio


From: gnunet
Subject: [taler-wallet-core] branch master updated: workaround: Failed transaction was started here
Date: Fri, 21 Oct 2022 14:27:04 +0200

This is an automated email from the git hooks/post-receive script.

sebasjm pushed a commit to branch master
in repository wallet-core.

The following commit(s) were added to refs/heads/master by this push:
     new 683c89ab7 workaround: Failed transaction was started here
683c89ab7 is described below

commit 683c89ab71a71fbd26bda58457ba5792e79d577f
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Fri Oct 21 09:26:53 2022 -0300

    workaround: Failed transaction was started here
---
 .../src/operations/transactions.ts                 | 52 +++++++++++++++++++---
 1 file changed, 46 insertions(+), 6 deletions(-)

diff --git a/packages/taler-wallet-core/src/operations/transactions.ts 
b/packages/taler-wallet-core/src/operations/transactions.ts
index 6e8ebc4f4..fea165588 100644
--- a/packages/taler-wallet-core/src/operations/transactions.ts
+++ b/packages/taler-wallet-core/src/operations/transactions.ts
@@ -188,7 +188,12 @@ export async function getTransactionById(
   } else if (type === TransactionType.Payment) {
     const proposalId = rest[0];
     return await ws.db
-      .mktx((x) => [x.purchases, x.tombstones, x.operationRetries])
+      .mktx((x) => [
+        x.purchases,
+        x.tombstones,
+        x.operationRetries,
+        x.contractTerms,
+      ])
       .runReadWrite(async (tx) => {
         const purchase = await tx.purchases.get(proposalId);
         if (!purchase) throw Error("not found");
@@ -207,13 +212,28 @@ export async function getTransactionById(
           }),
         );
 
-        const download = await expectProposalDownload(ws, purchase);
+        // const download = await expectProposalDownload(ws, purchase);
 
+        // FIXME: this is what expectProposalDownload, but nested tx is not 
supported
+        if (!purchase.download) {
+          throw Error("expected proposal to be downloaded");
+        }
+        const contractTerms = await tx.contractTerms.get(
+          purchase.download.contractTermsHash,
+        );
+        if (!contractTerms) {
+          throw Error("contract terms not found");
+        }
+        const contractData = extractContractData(
+          contractTerms.contractTermsRaw,
+          purchase.download.contractTermsHash,
+          purchase.download.contractTermsMerchantSig,
+        );
         const cleanRefunds = filteredRefunds.filter(
           (x): x is WalletRefundItem => !!x,
         );
 
-        const contractData = download.contractData;
+        // const contractData = download.contractData;
         const refunds = mergeRefundByExecutionTime(
           cleanRefunds,
           Amounts.getZero(contractData.amount.currency),
@@ -263,7 +283,12 @@ export async function getTransactionById(
     const executionTimeStr = rest[1];
 
     return await ws.db
-      .mktx((x) => [x.operationRetries, x.purchases, x.tombstones])
+      .mktx((x) => [
+        x.operationRetries,
+        x.purchases,
+        x.tombstones,
+        x.contractTerms,
+      ])
       .runReadWrite(async (tx) => {
         const purchase = await tx.purchases.get(proposalId);
         if (!purchase) throw Error("not found");
@@ -281,8 +306,23 @@ export async function getTransactionById(
           ),
         );
         if (t) throw Error("deleted");
-        const download = await expectProposalDownload(ws, purchase);
-        const contractData = download.contractData;
+        // const download = await expectProposalDownload(ws, purchase);
+        // const contractData = download.contractData;
+        // FIXME: this is what expectProposalDownload, but nested tx is not 
supported
+        if (!purchase.download) {
+          throw Error("expected proposal to be downloaded");
+        }
+        const contractTerms = await tx.contractTerms.get(
+          purchase.download.contractTermsHash,
+        );
+        if (!contractTerms) {
+          throw Error("contract terms not found");
+        }
+        const contractData = extractContractData(
+          contractTerms.contractTermsRaw,
+          purchase.download.contractTermsHash,
+          purchase.download.contractTermsMerchantSig,
+        );
         const refunds = mergeRefundByExecutionTime(
           [theRefund],
           Amounts.getZero(contractData.amount.currency),

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]