gnunet-svn
[Top][All Lists]
Advanced

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

[taler-wallet-core] 02/02: add delivery info in the parse contract terms


From: gnunet
Subject: [taler-wallet-core] 02/02: add delivery info in the parse contract terms and a function to get info from a proposalId
Date: Mon, 08 Aug 2022 18:53:14 +0200

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

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

commit 4409d8384b77401489c2a92d3de20f79959ae34a
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Mon Aug 8 13:53:04 2022 -0300

    add delivery info in the parse contract terms and a function to get info 
from a proposalId
---
 packages/taler-wallet-core/src/db.ts               |  3 +++
 .../src/operations/backup/import.ts                |  4 ++++
 packages/taler-wallet-core/src/operations/pay.ts   | 23 ++++++++++++++++++++++
 .../src/operations/transactions.ts                 |  3 +++
 packages/taler-wallet-core/src/wallet.ts           |  6 ++++++
 5 files changed, 39 insertions(+)

diff --git a/packages/taler-wallet-core/src/db.ts 
b/packages/taler-wallet-core/src/db.ts
index e4f4ba25..f763aae6 100644
--- a/packages/taler-wallet-core/src/db.ts
+++ b/packages/taler-wallet-core/src/db.ts
@@ -43,6 +43,7 @@ import {
   AgeCommitmentProof,
   PayCoinSelection,
   PeerContractTerms,
+  Location,
 } from "@gnu-taler/taler-util";
 import { RetryInfo } from "./util/retries.js";
 import { Event, IDBDatabase } from "@gnu-taler/idb-bridge";
@@ -1170,6 +1171,8 @@ export interface WalletContractData {
   wireInfoHash: string;
   maxDepositFee: AmountJson;
   minimumAge?: number;
+  deliveryDate: TalerProtocolTimestamp | undefined;
+  deliveryLocation: Location | undefined;
 }
 
 export enum AbortStatus {
diff --git a/packages/taler-wallet-core/src/operations/backup/import.ts 
b/packages/taler-wallet-core/src/operations/backup/import.ts
index e4eaf891..e099fae5 100644
--- a/packages/taler-wallet-core/src/operations/backup/import.ts
+++ b/packages/taler-wallet-core/src/operations/backup/import.ts
@@ -600,6 +600,8 @@ export async function importBackup(
                 merchant: parsedContractTerms.merchant,
                 products: parsedContractTerms.products,
                 summaryI18n: parsedContractTerms.summary_i18n,
+                deliveryDate: parsedContractTerms.delivery_date,
+                deliveryLocation: parsedContractTerms.delivery_location,
               },
               contractTermsRaw: backupProposal.contract_terms_raw,
             };
@@ -740,6 +742,8 @@ export async function importBackup(
               merchant: parsedContractTerms.merchant,
               products: parsedContractTerms.products,
               summaryI18n: parsedContractTerms.summary_i18n,
+              deliveryDate: parsedContractTerms.delivery_date,
+              deliveryLocation: parsedContractTerms.delivery_location,
             },
             contractTermsRaw: backupPurchase.contract_terms_raw,
           };
diff --git a/packages/taler-wallet-core/src/operations/pay.ts 
b/packages/taler-wallet-core/src/operations/pay.ts
index 55b8f513..d41a20e7 100644
--- a/packages/taler-wallet-core/src/operations/pay.ts
+++ b/packages/taler-wallet-core/src/operations/pay.ts
@@ -662,6 +662,8 @@ export function extractContractData(
     products: parsedContractTerms.products,
     summaryI18n: parsedContractTerms.summary_i18n,
     minimumAge: parsedContractTerms.minimum_age,
+    deliveryDate: parsedContractTerms.delivery_date,
+    deliveryLocation: parsedContractTerms.delivery_location,
   };
 }
 
@@ -1318,6 +1320,27 @@ export async function checkPaymentByProposalId(
   }
 }
 
+export async function getContractTermsDetails(
+  ws: InternalWalletState,
+  proposalId: string,
+): Promise<WalletContractData> {
+  const proposal = await ws.db
+    .mktx((x) => ({ proposals: x.proposals }))
+    .runReadOnly(async (tx) => {
+      return tx.proposals.get(proposalId);
+    });
+
+  if (!proposal) {
+    throw Error(`proposal with id ${proposalId} not found`);
+  }
+
+  if (!proposal.download || !proposal.download.contractData) {
+    throw Error("proposal is in invalid state");
+  }
+
+  return proposal.download.contractData
+}
+
 /**
  * Check if a payment for the given taler://pay/ URI is possible.
  *
diff --git a/packages/taler-wallet-core/src/operations/transactions.ts 
b/packages/taler-wallet-core/src/operations/transactions.ts
index 1ac2bd04..ebc223b2 100644
--- a/packages/taler-wallet-core/src/operations/transactions.ts
+++ b/packages/taler-wallet-core/src/operations/transactions.ts
@@ -448,6 +448,9 @@ export async function getTransactions(
               tipRecord.walletTipId,
             ),
             merchantBaseUrl: tipRecord.merchantBaseUrl,
+            // merchant: {
+            //   name: tipRecord.merchantBaseUrl,
+            // },
             error: tipRecord.lastError,
           });
         });
diff --git a/packages/taler-wallet-core/src/wallet.ts 
b/packages/taler-wallet-core/src/wallet.ts
index b56e9402..066f91a3 100644
--- a/packages/taler-wallet-core/src/wallet.ts
+++ b/packages/taler-wallet-core/src/wallet.ts
@@ -43,6 +43,7 @@ import {
   codecForCreateDepositGroupRequest,
   codecForDeleteTransactionRequest,
   codecForForceRefreshRequest,
+  codecForGetContractTermsDetails,
   codecForGetExchangeTosRequest,
   codecForGetExchangeWithdrawalInfo,
   codecForGetFeeForDeposit,
@@ -142,6 +143,7 @@ import {
 import { getMerchantInfo } from "./operations/merchants.js";
 import {
   confirmPay,
+  getContractTermsDetails,
   preparePayForUri,
   processDownloadProposal,
   processPurchasePay,
@@ -868,6 +870,10 @@ async function dispatchRequestInternal(
       const req = codecForGetExchangeTosRequest().decode(payload);
       return getExchangeTos(ws, req.exchangeBaseUrl, req.acceptedFormat);
     }
+    case "getContractTermsDetails": {
+      const req = codecForGetContractTermsDetails().decode(payload);
+      return getContractTermsDetails(ws, req.proposalId);
+    }
     case "retryPendingNow": {
       await runPending(ws, true);
       return {};

-- 
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]