gnunet-svn
[Top][All Lists]
Advanced

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

[taler-wallet-core] branch master updated: rename insufficient balance f


From: gnunet
Subject: [taler-wallet-core] branch master updated: rename insufficient balance fields to work for both merchant and p2p payments
Date: Thu, 07 Mar 2024 11:46:35 +0100

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

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

The following commit(s) were added to refs/heads/master by this push:
     new 53120dfc3 rename insufficient balance fields to work for both merchant 
and p2p payments
53120dfc3 is described below

commit 53120dfc3ec05d49fc6f94bb498c66238225dd6b
Author: Florian Dold <florian@dold.me>
AuthorDate: Thu Mar 7 11:46:31 2024 +0100

    rename insufficient balance fields to work for both merchant and p2p 
payments
---
 .../src/integrationtests/test-wallet-balance.ts    |  4 +--
 packages/taler-util/src/wallet-types.ts            | 12 ++++-----
 packages/taler-wallet-core/src/balance.ts          | 30 ++++++++++------------
 packages/taler-wallet-core/src/coinSelection.ts    | 18 ++++++-------
 .../src/components/PaymentButtons.tsx              |  8 +++---
 .../src/cta/Payment/stories.tsx                    | 24 ++++++++---------
 6 files changed, 46 insertions(+), 50 deletions(-)

diff --git a/packages/taler-harness/src/integrationtests/test-wallet-balance.ts 
b/packages/taler-harness/src/integrationtests/test-wallet-balance.ts
index 0e4452892..eb7359781 100644
--- a/packages/taler-harness/src/integrationtests/test-wallet-balance.ts
+++ b/packages/taler-harness/src/integrationtests/test-wallet-balance.ts
@@ -113,12 +113,12 @@ export async function runWalletBalanceTest(t: 
GlobalTestState) {
 
   t.assertTrue(
     Amounts.isNonZero(
-      preparePayResult.balanceDetails.balanceMerchantAcceptable,
+      preparePayResult.balanceDetails.balanceReceiverAcceptable,
     ),
   );
 
   t.assertTrue(
-    Amounts.isZero(preparePayResult.balanceDetails.balanceMerchantDepositable),
+    Amounts.isZero(preparePayResult.balanceDetails.balanceReceiverDepositable),
   );
 
   console.log("waiting for transactions to finalize");
diff --git a/packages/taler-util/src/wallet-types.ts 
b/packages/taler-util/src/wallet-types.ts
index cfbed04dc..69811969c 100644
--- a/packages/taler-util/src/wallet-types.ts
+++ b/packages/taler-util/src/wallet-types.ts
@@ -862,12 +862,12 @@ export interface PaymentInsufficientBalanceDetails {
   /**
    * Balance of type "merchant-acceptable" (see balance.ts for definition).
    */
-  balanceMerchantAcceptable: AmountString;
+  balanceReceiverAcceptable: AmountString;
 
   /**
    * Balance of type "merchant-depositable" (see balance.ts for definition).
    */
-  balanceMerchantDepositable: AmountString;
+  balanceReceiverDepositable: AmountString;
 
   balanceExchangeDepositable: AmountString;
 
@@ -883,8 +883,8 @@ export interface PaymentInsufficientBalanceDetails {
       balanceMaterial: AmountString;
       balanceExchangeDepositable: AmountString;
       balanceAgeAcceptable: AmountString;
-      balanceMerchantAcceptable: AmountString;
-      balanceMerchantDepositable: AmountString;
+      balanceReceiverAcceptable: AmountString;
+      balanceReceiverDepositable: AmountString;
       maxEffectiveSpendAmount: AmountString;
     };
   };
@@ -897,8 +897,8 @@ export const codecForPayMerchantInsufficientBalanceDetails =
       .property("balanceAgeAcceptable", codecForAmountString())
       .property("balanceAvailable", codecForAmountString())
       .property("balanceMaterial", codecForAmountString())
-      .property("balanceMerchantAcceptable", codecForAmountString())
-      .property("balanceMerchantDepositable", codecForAmountString())
+      .property("balanceReceiverAcceptable", codecForAmountString())
+      .property("balanceReceiverDepositable", codecForAmountString())
       .property("balanceExchangeDepositable", codecForAmountString())
       .property("perExchange", codecForAny())
       .property("maxEffectiveSpendAmount", codecForAmountString())
diff --git a/packages/taler-wallet-core/src/balance.ts 
b/packages/taler-wallet-core/src/balance.ts
index 26d348b39..5e3562ba2 100644
--- a/packages/taler-wallet-core/src/balance.ts
+++ b/packages/taler-wallet-core/src/balance.ts
@@ -51,8 +51,6 @@
  */
 import { GlobalIDB } from "@gnu-taler/idb-bridge";
 import {
-  AllowedAuditorInfo,
-  AllowedExchangeInfo,
   AmountJson,
   AmountLike,
   Amounts,
@@ -60,12 +58,13 @@ import {
   BalanceFlag,
   BalancesResponse,
   GetBalanceDetailRequest,
+  j2s,
   Logger,
   parsePaytoUri,
   ScopeInfo,
   ScopeType,
 } from "@gnu-taler/taler-util";
-import { findMatchingWire } from "./coinSelection.js";
+import { ExchangeRestrictionSpec, findMatchingWire } from "./coinSelection.js";
 import {
   DepositOperationStatus,
   OPERATION_STATUS_ACTIVE_FIRST,
@@ -462,12 +461,7 @@ export async function getBalances(
 export interface PaymentRestrictionsForBalance {
   currency: string;
   minAge: number;
-  restrictExchanges:
-    | {
-        exchanges: AllowedExchangeInfo[];
-        auditors: AllowedAuditorInfo[];
-      }
-    | undefined;
+  restrictExchanges: ExchangeRestrictionSpec | undefined;
   restrictWireMethods: string[] | undefined;
   depositPaytoUri: string | undefined;
 }
@@ -504,12 +498,12 @@ export interface PaymentBalanceDetails {
   /**
    * Balance of type "merchant-acceptable" (see balance.ts for definition).
    */
-  balanceMerchantAcceptable: AmountJson;
+  balanceReceiverAcceptable: AmountJson;
 
   /**
    * Balance of type "merchant-depositable" (see balance.ts for definition).
    */
-  balanceMerchantDepositable: AmountJson;
+  balanceReceiverDepositable: AmountJson;
 
   /**
    * Balance that's depositable with the exchange.
@@ -556,12 +550,14 @@ export async function getPaymentBalanceDetailsInTx(
     balanceAvailable: Amounts.zeroOfCurrency(req.currency),
     balanceMaterial: Amounts.zeroOfCurrency(req.currency),
     balanceAgeAcceptable: Amounts.zeroOfCurrency(req.currency),
-    balanceMerchantAcceptable: Amounts.zeroOfCurrency(req.currency),
-    balanceMerchantDepositable: Amounts.zeroOfCurrency(req.currency),
+    balanceReceiverAcceptable: Amounts.zeroOfCurrency(req.currency),
+    balanceReceiverDepositable: Amounts.zeroOfCurrency(req.currency),
     maxEffectiveSpendAmount: Amounts.zeroOfCurrency(req.currency),
     balanceExchangeDepositable: Amounts.zeroOfCurrency(req.currency),
   };
 
+  logger.info(`computing balance details for ${j2s(req)}`);
+
   const availableCoins = await tx.coinAvailability.getAll();
 
   for (const ca of availableCoins) {
@@ -646,13 +642,13 @@ export async function getPaymentBalanceDetailsInTx(
         coinAmount,
       ).amount;
       if (merchantExchangeAcceptable) {
-        d.balanceMerchantAcceptable = Amounts.add(
-          d.balanceMerchantAcceptable,
+        d.balanceReceiverAcceptable = Amounts.add(
+          d.balanceReceiverAcceptable,
           coinAmount,
         ).amount;
         if (merchantExchangeDepositable) {
-          d.balanceMerchantDepositable = Amounts.add(
-            d.balanceMerchantDepositable,
+          d.balanceReceiverDepositable = Amounts.add(
+            d.balanceReceiverDepositable,
             coinAmount,
           ).amount;
         }
diff --git a/packages/taler-wallet-core/src/coinSelection.ts 
b/packages/taler-wallet-core/src/coinSelection.ts
index 98fd0dec1..50965fd6c 100644
--- a/packages/taler-wallet-core/src/coinSelection.ts
+++ b/packages/taler-wallet-core/src/coinSelection.ts
@@ -392,7 +392,7 @@ export async function reportInsufficientBalanceDetails(
 ): Promise<PaymentInsufficientBalanceDetails> {
   const details = await getPaymentBalanceDetailsInTx(wex, tx, {
     restrictExchanges: req.restrictExchanges,
-    restrictWireMethods: req.wireMethod ? [req.wireMethod] : [],
+    restrictWireMethods: req.wireMethod ? [req.wireMethod] : undefined,
     currency: Amounts.currencyOf(req.instructedAmount),
     minAge: req.requiredMinimumAge ?? 0,
     depositPaytoUri: req.depositPaytoUri,
@@ -426,11 +426,11 @@ export async function reportInsufficientBalanceDetails(
         exchDet.balanceExchangeDepositable,
       ),
       balanceAgeAcceptable: Amounts.stringify(exchDet.balanceAgeAcceptable),
-      balanceMerchantAcceptable: Amounts.stringify(
-        exchDet.balanceMerchantAcceptable,
+      balanceReceiverAcceptable: Amounts.stringify(
+        exchDet.balanceReceiverAcceptable,
       ),
-      balanceMerchantDepositable: Amounts.stringify(
-        exchDet.balanceMerchantDepositable,
+      balanceReceiverDepositable: Amounts.stringify(
+        exchDet.balanceReceiverDepositable,
       ),
       maxEffectiveSpendAmount: Amounts.stringify(
         exchDet.maxEffectiveSpendAmount,
@@ -443,14 +443,14 @@ export async function reportInsufficientBalanceDetails(
     balanceAgeAcceptable: Amounts.stringify(details.balanceAgeAcceptable),
     balanceAvailable: Amounts.stringify(details.balanceAvailable),
     balanceMaterial: Amounts.stringify(details.balanceMaterial),
-    balanceMerchantAcceptable: Amounts.stringify(
-      details.balanceMerchantAcceptable,
+    balanceReceiverAcceptable: Amounts.stringify(
+      details.balanceReceiverAcceptable,
     ),
     balanceExchangeDepositable: Amounts.stringify(
       details.balanceExchangeDepositable,
     ),
-    balanceMerchantDepositable: Amounts.stringify(
-      details.balanceMerchantDepositable,
+    balanceReceiverDepositable: Amounts.stringify(
+      details.balanceReceiverDepositable,
     ),
     maxEffectiveSpendAmount: 
Amounts.stringify(details.maxEffectiveSpendAmount),
     perExchange,
diff --git 
a/packages/taler-wallet-webextension/src/components/PaymentButtons.tsx 
b/packages/taler-wallet-webextension/src/components/PaymentButtons.tsx
index e7c4fbba4..21ee4d3d2 100644
--- a/packages/taler-wallet-webextension/src/components/PaymentButtons.tsx
+++ b/packages/taler-wallet-webextension/src/components/PaymentButtons.tsx
@@ -93,7 +93,7 @@ export function PaymentButtons({
       }
       case "merchant-acceptable": {
         BalanceMessage = i18n.str`Balance is not enough because merchant will 
just accept ${Amounts.stringifyValue(
-          payStatus.balanceDetails.balanceMerchantAcceptable,
+          payStatus.balanceDetails.balanceReceiverAcceptable,
         )} ${
           amount.currency
         } . To know more you can check which exchange and auditors the 
merchant trust.`;
@@ -101,7 +101,7 @@ export function PaymentButtons({
       }
       case "merchant-depositable": {
         BalanceMessage = i18n.str`Balance is not enough because merchant will 
just accept ${Amounts.stringifyValue(
-          payStatus.balanceDetails.balanceMerchantDepositable,
+          payStatus.balanceDetails.balanceReceiverDepositable,
         )} ${
           amount.currency
         } . To know more you can check which wire methods the merchant 
accepts.`;
@@ -232,10 +232,10 @@ function getReason(
   if (Amounts.cmp(info.amountRequested, info.balanceAgeAcceptable) > 0) {
     return "age-acceptable";
   }
-  if (Amounts.cmp(info.amountRequested, info.balanceMerchantAcceptable) > 0) {
+  if (Amounts.cmp(info.amountRequested, info.balanceReceiverAcceptable) > 0) {
     return "merchant-acceptable";
   }
-  if (Amounts.cmp(info.amountRequested, info.balanceMerchantDepositable) > 0) {
+  if (Amounts.cmp(info.amountRequested, info.balanceReceiverDepositable) > 0) {
     return "merchant-depositable";
   }
   return "fee-gap";
diff --git a/packages/taler-wallet-webextension/src/cta/Payment/stories.tsx 
b/packages/taler-wallet-webextension/src/cta/Payment/stories.tsx
index 93b96c836..d03f48746 100644
--- a/packages/taler-wallet-webextension/src/cta/Payment/stories.tsx
+++ b/packages/taler-wallet-webextension/src/cta/Payment/stories.tsx
@@ -57,8 +57,8 @@ export const NoEnoughBalanceAvailable = 
tests.createExample(BaseView, {
       balanceAvailable: "USD:9" as AmountString,
       balanceMaterial: "USD:9" as AmountString,
       balanceAgeAcceptable: "USD:9" as AmountString,
-      balanceMerchantAcceptable: "USD:9" as AmountString,
-      balanceMerchantDepositable: "USD:9" as AmountString,
+      balanceReceiverAcceptable: "USD:9" as AmountString,
+      balanceReceiverDepositable: "USD:9" as AmountString,
       maxEffectiveSpendAmount: "USD:9.5" as AmountString,
       balanceExchangeDepositable: "USD:9.5" as AmountString,
       perExchange: {},
@@ -99,8 +99,8 @@ export const NoEnoughBalanceMaterial = 
tests.createExample(BaseView, {
       balanceAvailable: "USD:10" as AmountString,
       balanceMaterial: "USD:9" as AmountString,
       balanceAgeAcceptable: "USD:9" as AmountString,
-      balanceMerchantAcceptable: "USD:9" as AmountString,
-      balanceMerchantDepositable: "USD:0" as AmountString,
+      balanceReceiverAcceptable: "USD:9" as AmountString,
+      balanceReceiverDepositable: "USD:0" as AmountString,
       maxEffectiveSpendAmount: "USD:9.5" as AmountString,
       balanceExchangeDepositable: "USD:9.5" as AmountString,
       perExchange: {},
@@ -141,8 +141,8 @@ export const NoEnoughBalanceAgeAcceptable = 
tests.createExample(BaseView, {
       balanceAvailable: "USD:10" as AmountString,
       balanceMaterial: "USD:10" as AmountString,
       balanceAgeAcceptable: "USD:9" as AmountString,
-      balanceMerchantAcceptable: "USD:9" as AmountString,
-      balanceMerchantDepositable: "USD:9" as AmountString,
+      balanceReceiverAcceptable: "USD:9" as AmountString,
+      balanceReceiverDepositable: "USD:9" as AmountString,
       maxEffectiveSpendAmount: "USD:9.5" as AmountString,
       balanceExchangeDepositable: "USD:9.5" as AmountString,
       perExchange: {},
@@ -184,8 +184,8 @@ export const NoEnoughBalanceMerchantAcceptable = 
tests.createExample(BaseView, {
       balanceAvailable: "USD:10" as AmountString,
       balanceMaterial: "USD:10" as AmountString,
       balanceAgeAcceptable: "USD:10" as AmountString,
-      balanceMerchantAcceptable: "USD:9" as AmountString,
-      balanceMerchantDepositable: "USD:9" as AmountString,
+      balanceReceiverAcceptable: "USD:9" as AmountString,
+      balanceReceiverDepositable: "USD:9" as AmountString,
       maxEffectiveSpendAmount: "USD:9.5" as AmountString,
       balanceExchangeDepositable: "USD:9.5" as AmountString,
       perExchange: {},
@@ -228,8 +228,8 @@ export const NoEnoughBalanceMerchantDepositable = 
tests.createExample(
         balanceAvailable: "USD:10" as AmountString,
         balanceMaterial: "USD:10" as AmountString,
         balanceAgeAcceptable: "USD:10" as AmountString,
-        balanceMerchantAcceptable: "USD:10" as AmountString,
-        balanceMerchantDepositable: "USD:9" as AmountString,
+        balanceReceiverAcceptable: "USD:10" as AmountString,
+        balanceReceiverDepositable: "USD:9" as AmountString,
         maxEffectiveSpendAmount: "USD:9.5" as AmountString,
         balanceExchangeDepositable: "USD:9.5" as AmountString,
         perExchange: {},
@@ -271,8 +271,8 @@ export const NoEnoughBalanceFeeGap = 
tests.createExample(BaseView, {
       balanceAvailable: "USD:10" as AmountString,
       balanceMaterial: "USD:10" as AmountString,
       balanceAgeAcceptable: "USD:10" as AmountString,
-      balanceMerchantAcceptable: "USD:10" as AmountString,
-      balanceMerchantDepositable: "USD:10" as AmountString,
+      balanceReceiverAcceptable: "USD:10" as AmountString,
+      balanceReceiverDepositable: "USD:10" as AmountString,
       maxEffectiveSpendAmount: "USD:9.5" as AmountString,
       balanceExchangeDepositable: "USD:9.5" as AmountString,
       perExchange: {},

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