gnunet-svn
[Top][All Lists]
Advanced

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

[taler-wallet-core] branch master updated (284df1fb5 -> 727c0f3d4)


From: gnunet
Subject: [taler-wallet-core] branch master updated (284df1fb5 -> 727c0f3d4)
Date: Thu, 07 Mar 2024 17:53:40 +0100

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

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

    from 284df1fb5 build was missing, needed for pnpm build with dependency
     new c22b13eeb wallet-core: implement and test lost flag for denominations
     new 727c0f3d4 wallet-core: get rid of max_wire_fee

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 ...t-payment-forgettable.ts => test-denom-lost.ts} | 74 ++++++++++------------
 .../src/integrationtests/testrunner.ts             |  2 +
 packages/taler-util/src/wallet-types.ts            | 19 +++++-
 .../taler-wallet-core/src/coinSelection.test.ts    |  2 -
 packages/taler-wallet-core/src/coinSelection.ts    | 20 +-----
 packages/taler-wallet-core/src/db.ts               |  7 ++
 packages/taler-wallet-core/src/denominations.ts    |  5 +-
 packages/taler-wallet-core/src/deposits.ts         |  2 -
 packages/taler-wallet-core/src/exchanges.ts        | 11 ++++
 packages/taler-wallet-core/src/pay-merchant.ts     | 10 ---
 packages/taler-wallet-core/src/wallet-api-types.ts | 13 ++++
 packages/taler-wallet-core/src/wallet.ts           | 25 ++++++++
 .../ShowFullContractTermPopup.stories.tsx          |  1 -
 .../src/components/ShowFullContractTermPopup.tsx   |  8 ---
 14 files changed, 113 insertions(+), 86 deletions(-)
 copy packages/taler-harness/src/integrationtests/{test-payment-forgettable.ts 
=> test-denom-lost.ts} (55%)

diff --git 
a/packages/taler-harness/src/integrationtests/test-payment-forgettable.ts 
b/packages/taler-harness/src/integrationtests/test-denom-lost.ts
similarity index 55%
copy from 
packages/taler-harness/src/integrationtests/test-payment-forgettable.ts
copy to packages/taler-harness/src/integrationtests/test-denom-lost.ts
index 21d76397d..307ae352a 100644
--- a/packages/taler-harness/src/integrationtests/test-payment-forgettable.ts
+++ b/packages/taler-harness/src/integrationtests/test-denom-lost.ts
@@ -21,14 +21,13 @@ import { WalletApiOperation } from 
"@gnu-taler/taler-wallet-core";
 import { GlobalTestState } from "../harness/harness.js";
 import {
   createSimpleTestkudosEnvironmentV2,
-  makeTestPaymentV2,
   withdrawViaBankV2,
 } from "../harness/helpers.js";
 
 /**
- * Run test for payment with a contract that has forgettable fields.
+ * Run test for refreshe after a payment.
  */
-export async function runPaymentForgettableTest(t: GlobalTestState) {
+export async function runDenomLostTest(t: GlobalTestState) {
   // Set up test environment
 
   const { walletClient, bank, exchange, merchant } =
@@ -45,41 +44,38 @@ export async function runPaymentForgettableTest(t: 
GlobalTestState) {
 
   await wres.withdrawalFinishedCond;
 
-  {
-    const order = {
-      summary: "Buy me!",
-      amount: "TESTKUDOS:5",
-      fulfillment_url: "taler://fulfillment-success/thx",
-      extra: {
-        foo: { bar: "baz" },
-        $forgettable: {
-          foo: "gnu",
-        },
-      },
-    };
-
-    await makeTestPaymentV2(t, { walletClient, merchant, order });
-  }
-
-  console.log("testing with forgettable field without hash");
-
-  {
-    const order = {
-      summary: "Buy me!",
-      amount: "TESTKUDOS:5",
-      fulfillment_url: "taler://fulfillment-success/thx",
-      extra: {
-        foo: { bar: "baz" },
-        $forgettable: {
-          foo: true,
-        },
-      },
-    };
-
-    await makeTestPaymentV2(t, { walletClient, merchant, order });
-  }
-
-  await walletClient.call(WalletApiOperation.TestingWaitTransactionsFinal, {});
+  const dsBefore = await walletClient.call(
+    WalletApiOperation.TestingGetDenomStats,
+    {
+      exchangeBaseUrl: exchange.baseUrl,
+    },
+  );
+
+  t.assertDeepEqual(dsBefore.numLost, 0);
+  t.assertDeepEqual(dsBefore.numOffered, dsBefore.numKnown);
+
+  await exchange.stop();
+
+  await exchange.purgeSecmodKeys();
+
+  await exchange.start();
+
+  await walletClient.call(WalletApiOperation.UpdateExchangeEntry, {
+    exchangeBaseUrl: exchange.baseUrl,
+    force: true,
+  });
+
+  const dsAfter = await walletClient.call(
+    WalletApiOperation.TestingGetDenomStats,
+    {
+      exchangeBaseUrl: exchange.baseUrl,
+    },
+  );
+
+  // All previous denominations were lost
+  t.assertDeepEqual(dsBefore.numOffered, dsAfter.numLost);
+  // But we have new ones!
+  t.assertTrue(dsAfter.numKnown > dsBefore.numKnown);
 }
 
-runPaymentForgettableTest.suites = ["wallet", "merchant"];
+runDenomLostTest.suites = ["wallet"];
diff --git a/packages/taler-harness/src/integrationtests/testrunner.ts 
b/packages/taler-harness/src/integrationtests/testrunner.ts
index a294b27f4..566350770 100644
--- a/packages/taler-harness/src/integrationtests/testrunner.ts
+++ b/packages/taler-harness/src/integrationtests/testrunner.ts
@@ -36,6 +36,7 @@ import { runBankApiTest } from "./test-bank-api.js";
 import { runClaimLoopTest } from "./test-claim-loop.js";
 import { runClauseSchnorrTest } from "./test-clause-schnorr.js";
 import { runCurrencyScopeTest } from "./test-currency-scope.js";
+import { runDenomLostTest } from "./test-denom-lost.js";
 import { runDenomUnofferedTest } from "./test-denom-unoffered.js";
 import { runDepositTest } from "./test-deposit.js";
 import { runExchangeDepositTest } from "./test-exchange-deposit.js";
@@ -208,6 +209,7 @@ const allTests: TestMainFunction[] = [
   runWalletBalanceZeroTest,
   runWalletInsufficientBalanceTest,
   runWalletWirefeesTest,
+  runDenomLostTest,
 ];
 
 export interface TestRunSpec {
diff --git a/packages/taler-util/src/wallet-types.ts 
b/packages/taler-util/src/wallet-types.ts
index 69811969c..599f65731 100644
--- a/packages/taler-util/src/wallet-types.ts
+++ b/packages/taler-util/src/wallet-types.ts
@@ -291,7 +291,6 @@ interface GetPlanForPaymentRequest extends 
GetPlanToCompleteOperation {
   wireMethod: string;
   ageRestriction: number;
   maxDepositFee: AmountString;
-  maxWireFee: AmountString;
 }
 
 // interface GetPlanForTipRequest extends GetPlanForOperationBase {
@@ -311,7 +310,6 @@ const codecForGetPlanForPaymentRequest =
   buildCodecForObject<GetPlanForPaymentRequest>()
     .property("type", codecForConstString(TransactionType.Payment))
     .property("maxDepositFee", codecForAmountString())
-    .property("maxWireFee", codecForAmountString())
     .build("GetPlanForPaymentRequest");
 
 const codecForGetPlanForPullDebitRequest =
@@ -2965,7 +2963,6 @@ export interface WalletContractData {
   summary: string;
   summaryI18n: { [lang_tag: string]: string } | undefined;
   autoRefund: TalerProtocolDuration | undefined;
-  maxWireFee: AmountString;
   wireFeeAmortization: number;
   payDeadline: TalerProtocolTimestamp;
   refundDeadline: TalerProtocolTimestamp;
@@ -2982,6 +2979,22 @@ export interface TestingWaitTransactionRequest {
   txState: TransactionState;
 }
 
+export interface TestingGetDenomStatsRequest {
+  exchangeBaseUrl: string;
+}
+
+export interface TestingGetDenomStatsResponse {
+  numKnown: number;
+  numOffered: number;
+  numLost: number;
+}
+
+export const codecForTestingGetDenomStatsRequest =
+  (): Codec<TestingGetDenomStatsRequest> =>
+    buildCodecForObject<TestingGetDenomStatsRequest>()
+      .property("exchangeBaseUrl", codecForString())
+      .build("TestingGetDenomStatsRequest");
+
 export interface WithdrawalExchangeAccountDetails {
   /**
    * Payto URI to credit the exchange.
diff --git a/packages/taler-wallet-core/src/coinSelection.test.ts 
b/packages/taler-wallet-core/src/coinSelection.test.ts
index 3d8e24b0c..67cd08652 100644
--- a/packages/taler-wallet-core/src/coinSelection.test.ts
+++ b/packages/taler-wallet-core/src/coinSelection.test.ts
@@ -140,7 +140,6 @@ test("pay: select one coin to pay with fee", (t) => {
   const zero = Amounts.zeroOfCurrency(payment.currency);
   const tally = {
     amountPayRemaining: payment,
-    amountWireFeeLimitRemaining: zero,
     amountDepositFeeLimitRemaining: zero,
     customerDepositFees: zero,
     customerWireFees: zero,
@@ -176,7 +175,6 @@ test("pay: select one coin to pay with fee", (t) => {
 
   t.deepEqual(tally, {
     amountPayRemaining: Amounts.parseOrThrow("LOCAL:0"),
-    amountWireFeeLimitRemaining: zero,
     amountDepositFeeLimitRemaining: zero,
     customerDepositFees: Amounts.parse("LOCAL:0.1"),
     customerWireFees: Amounts.parse("LOCAL:0.1"),
diff --git a/packages/taler-wallet-core/src/coinSelection.ts 
b/packages/taler-wallet-core/src/coinSelection.ts
index 672d0ee79..7c22f63db 100644
--- a/packages/taler-wallet-core/src/coinSelection.ts
+++ b/packages/taler-wallet-core/src/coinSelection.ts
@@ -75,11 +75,6 @@ export interface CoinSelectionTally {
    */
   amountPayRemaining: AmountJson;
 
-  /**
-   * Allowance given by the merchant towards wire fees
-   */
-  amountWireFeeLimitRemaining: AmountJson;
-
   /**
    * Allowance given by the merchant towards deposit fees
    * (and wire fees after wire fee limit is exhausted)
@@ -110,17 +105,9 @@ function tallyFees(
   if (!tally.wireFeeCoveredForExchange.has(exchangeBaseUrl)) {
     const wf =
       wireFeesPerExchange[exchangeBaseUrl] ?? Amounts.zeroOfCurrency(currency);
-    const wfForgiven = Amounts.min(tally.amountWireFeeLimitRemaining, wf);
-    tally.amountWireFeeLimitRemaining = Amounts.sub(
-      tally.amountWireFeeLimitRemaining,
-      wfForgiven,
-    ).amount;
     // The remaining, amortized amount needs to be paid by the
     // wallet or covered by the deposit fee allowance.
-    let wfRemaining = Amounts.divide(
-      Amounts.sub(wf, wfForgiven).amount,
-      wireFeeAmortization,
-    );
+    let wfRemaining = Amounts.divide(wf, wireFeeAmortization);
     // This is the amount forgiven via the deposit fee allowance.
     const wfDepositForgiven = Amounts.min(
       tally.amountDepositFeeLimitRemaining,
@@ -183,7 +170,7 @@ export async function selectPayCoins(
   wex: WalletExecutionContext,
   req: SelectPayCoinRequestNg,
 ): Promise<SelectPayCoinsResult> {
-  const { contractTermsAmount, depositFeeLimit, wireFeeLimit } = req;
+  const { contractTermsAmount, depositFeeLimit } = req;
 
   if (logger.shouldLogTrace()) {
     logger.trace(`selecting coins for ${j2s(req)}`);
@@ -218,7 +205,6 @@ export async function selectPayCoins(
 
       let tally: CoinSelectionTally = {
         amountPayRemaining: contractTermsAmount,
-        amountWireFeeLimitRemaining: wireFeeLimit,
         amountDepositFeeLimitRemaining: depositFeeLimit,
         customerDepositFees: Amounts.zeroOfCurrency(currency),
         customerWireFees: Amounts.zeroOfCurrency(currency),
@@ -640,7 +626,6 @@ export interface SelectPayCoinRequestNg {
   restrictWireMethod: string;
   contractTermsAmount: AmountJson;
   depositFeeLimit: AmountJson;
-  wireFeeLimit: AmountJson;
   wireFeeAmortization: number;
   prevPayCoins?: PreviousPayCoins;
   requiredMinimumAge?: number;
@@ -910,7 +895,6 @@ export function emptyTallyForPeerPayment(
     customerDepositFees: zero,
     lastDepositFee: zero,
     amountDepositFeeLimitRemaining: zero,
-    amountWireFeeLimitRemaining: zero,
     customerWireFees: zero,
     wireFeeCoveredForExchange: new Set(),
   };
diff --git a/packages/taler-wallet-core/src/db.ts 
b/packages/taler-wallet-core/src/db.ts
index 14621c2d5..b59efe034 100644
--- a/packages/taler-wallet-core/src/db.ts
+++ b/packages/taler-wallet-core/src/db.ts
@@ -485,6 +485,13 @@ export interface DenominationRecord {
    */
   isRevoked: boolean;
 
+  /**
+   * If set to true, the exchange announced that the private key for this
+   * denomination is lost.  Thus it can't be used to sign new coins
+   * during withdrawal/refresh/..., but the coins can still be spent.
+   */
+  isLost?: boolean;
+
   /**
    * Base URL of the exchange.
    */
diff --git a/packages/taler-wallet-core/src/denominations.ts 
b/packages/taler-wallet-core/src/denominations.ts
index a539918de..d41307d5d 100644
--- a/packages/taler-wallet-core/src/denominations.ts
+++ b/packages/taler-wallet-core/src/denominations.ts
@@ -24,7 +24,6 @@ import {
   AmountString,
   DenominationInfo,
   Duration,
-  durationFromSpec,
   FeeDescription,
   FeeDescriptionPair,
   TalerProtocolTimestamp,
@@ -471,10 +470,10 @@ export function isWithdrawableDenom(
   } else {
     lastPossibleWithdraw = AbsoluteTime.subtractDuraction(
       withdrawExpire,
-      durationFromSpec({ minutes: 5 }),
+      Duration.fromSpec({ minutes: 5 }),
     );
   }
   const remaining = Duration.getRemaining(lastPossibleWithdraw, now);
   const stillOkay = remaining.d_ms !== 0;
-  return started && stillOkay && !d.isRevoked && d.isOffered;
+  return started && stillOkay && !d.isRevoked && d.isOffered && !d.isLost;
 }
diff --git a/packages/taler-wallet-core/src/deposits.ts 
b/packages/taler-wallet-core/src/deposits.ts
index 2c7ee3596..2ee452de7 100644
--- a/packages/taler-wallet-core/src/deposits.ts
+++ b/packages/taler-wallet-core/src/deposits.ts
@@ -1228,7 +1228,6 @@ export async function prepareDepositGroup(
     contractTermsAmount: Amounts.parseOrThrow(contractData.amount),
     depositFeeLimit: Amounts.parseOrThrow(contractData.maxDepositFee),
     wireFeeAmortization: contractData.wireFeeAmortization ?? 1,
-    wireFeeLimit: Amounts.parseOrThrow(contractData.maxWireFee),
     prevPayCoins: [],
   });
 
@@ -1349,7 +1348,6 @@ export async function createDepositGroup(
     contractTermsAmount: Amounts.parseOrThrow(contractData.amount),
     depositFeeLimit: Amounts.parseOrThrow(contractData.maxDepositFee),
     wireFeeAmortization: contractData.wireFeeAmortization ?? 1,
-    wireFeeLimit: Amounts.parseOrThrow(contractData.maxWireFee),
     prevPayCoins: [],
   });
 
diff --git a/packages/taler-wallet-core/src/exchanges.ts 
b/packages/taler-wallet-core/src/exchanges.ts
index 335caff62..c44178de8 100644
--- a/packages/taler-wallet-core/src/exchanges.ts
+++ b/packages/taler-wallet-core/src/exchanges.ts
@@ -779,6 +779,7 @@ async function downloadExchangeKeysInfo(
             exchangeMasterPub: exchangeKeysJsonUnchecked.master_public_key,
             isOffered: true,
             isRevoked: false,
+            isLost: denomIn.lost ?? false,
             value: Amounts.stringify(value),
             currency: value.currency,
             stampExpireDeposit: timestampProtocolToDb(
@@ -1432,6 +1433,16 @@ export async function updateExchangeFromUrlHandler(
         ]);
         if (oldDenom) {
           // FIXME: Do consistency check, report to auditor if necessary.
+          // See https://bugs.taler.net/n/8594
+
+          // Mark lost denominations as lost.
+          if (currentDenom.isLost && !oldDenom.isLost) {
+            logger.warn(
+              `marking denomination ${currentDenom.denomPubHash} of 
${exchangeBaseUrl} as lost`,
+            );
+            oldDenom.isLost = true;
+            await tx.denominations.put(currentDenom);
+          }
         } else {
           await tx.denominations.put(currentDenom);
         }
diff --git a/packages/taler-wallet-core/src/pay-merchant.ts 
b/packages/taler-wallet-core/src/pay-merchant.ts
index a155d6298..4f9c20c9e 100644
--- a/packages/taler-wallet-core/src/pay-merchant.ts
+++ b/packages/taler-wallet-core/src/pay-merchant.ts
@@ -568,12 +568,6 @@ export function extractContractData(
   merchantSig: string,
 ): WalletContractData {
   const amount = Amounts.parseOrThrow(parsedContractTerms.amount);
-  let maxWireFee: AmountJson;
-  if (parsedContractTerms.max_wire_fee) {
-    maxWireFee = Amounts.parseOrThrow(parsedContractTerms.max_wire_fee);
-  } else {
-    maxWireFee = Amounts.zeroOfCurrency(amount.currency);
-  }
   return {
     amount: Amounts.stringify(amount),
     contractTermsHash: contractTermsHash,
@@ -584,7 +578,6 @@ export function extractContractData(
     orderId: parsedContractTerms.order_id,
     summary: parsedContractTerms.summary,
     autoRefund: parsedContractTerms.auto_refund,
-    maxWireFee: Amounts.stringify(maxWireFee),
     payDeadline: parsedContractTerms.pay_deadline,
     refundDeadline: parsedContractTerms.refund_deadline,
     wireFeeAmortization: parsedContractTerms.wire_fee_amortization || 1,
@@ -1157,7 +1150,6 @@ async function handleInsufficientFunds(
     contractTermsAmount: Amounts.parseOrThrow(contractData.amount),
     depositFeeLimit: Amounts.parseOrThrow(contractData.maxDepositFee),
     wireFeeAmortization: contractData.wireFeeAmortization ?? 1,
-    wireFeeLimit: Amounts.parseOrThrow(contractData.maxWireFee),
     prevPayCoins,
     requiredMinimumAge: contractData.minimumAge,
   });
@@ -1287,7 +1279,6 @@ async function checkPaymentByProposalId(
       contractTermsAmount: instructedAmount,
       depositFeeLimit: Amounts.parseOrThrow(contractData.maxDepositFee),
       wireFeeAmortization: contractData.wireFeeAmortization ?? 1,
-      wireFeeLimit: Amounts.parseOrThrow(contractData.maxWireFee),
       prevPayCoins: [],
       requiredMinimumAge: contractData.minimumAge,
       restrictWireMethod: contractData.wireMethod,
@@ -1825,7 +1816,6 @@ export async function confirmPay(
     contractTermsAmount: Amounts.parseOrThrow(contractData.amount),
     depositFeeLimit: Amounts.parseOrThrow(contractData.maxDepositFee),
     wireFeeAmortization: contractData.wireFeeAmortization ?? 1,
-    wireFeeLimit: Amounts.parseOrThrow(contractData.maxWireFee),
     prevPayCoins: [],
     requiredMinimumAge: contractData.minimumAge,
     forcedSelection: forcedCoinSel,
diff --git a/packages/taler-wallet-core/src/wallet-api-types.ts 
b/packages/taler-wallet-core/src/wallet-api-types.ts
index ace702e88..4f4b24b62 100644
--- a/packages/taler-wallet-core/src/wallet-api-types.ts
+++ b/packages/taler-wallet-core/src/wallet-api-types.ts
@@ -117,6 +117,8 @@ import {
   StoredBackupList,
   TestPayArgs,
   TestPayResult,
+  TestingGetDenomStatsRequest,
+  TestingGetDenomStatsResponse,
   TestingListTasksForTransactionRequest,
   TestingListTasksForTransactionsResponse,
   TestingSetTimetravelRequest,
@@ -255,6 +257,7 @@ export enum WalletApiOperation {
   RemoveGlobalCurrencyAuditor = "removeGlobalCurrencyAuditor",
   ListAssociatedRefreshes = "listAssociatedRefreshes",
   TestingListTaskForTransaction = "testingListTasksForTransaction",
+  TestingGetDenomStats = "testingGetDenomStats",
 }
 
 // group: Initialization
@@ -1113,6 +1116,15 @@ export type TestingWaitTransactionStateOp = {
   response: EmptyObject;
 };
 
+/**
+ * Get stats about an exchange denomination.
+ */
+export type TestingGetDenomStatsOp = {
+  op: WalletApiOperation.TestingGetDenomStats;
+  request: TestingGetDenomStatsRequest;
+  response: TestingGetDenomStatsResponse;
+};
+
 /**
  * Set a coin as (un-)suspended.
  * Suspended coins won't be used for payments.
@@ -1238,6 +1250,7 @@ export type WalletOperations = {
   [WalletApiOperation.RemoveGlobalCurrencyExchange]: 
RemoveGlobalCurrencyExchangeOp;
   [WalletApiOperation.ListAssociatedRefreshes]: ListAssociatedRefreshesOp;
   [WalletApiOperation.TestingListTaskForTransaction]: 
TestingListTasksForTransactionOp;
+  [WalletApiOperation.TestingGetDenomStats]: TestingGetDenomStatsOp;
 };
 
 export type WalletCoreRequestType<
diff --git a/packages/taler-wallet-core/src/wallet.ts 
b/packages/taler-wallet-core/src/wallet.ts
index 8c9eee009..46f58ec81 100644
--- a/packages/taler-wallet-core/src/wallet.ts
+++ b/packages/taler-wallet-core/src/wallet.ts
@@ -57,6 +57,7 @@ import {
   TalerErrorCode,
   TalerProtocolTimestamp,
   TalerUriAction,
+  TestingGetDenomStatsResponse,
   TestingListTasksForTransactionsResponse,
   TestingWaitTransactionRequest,
   TimerAPI,
@@ -126,6 +127,7 @@ import {
   codecForStartRefundQueryRequest,
   codecForSuspendTransaction,
   codecForTestPayArgs,
+  codecForTestingGetDenomStatsRequest,
   codecForTestingListTasksForTransactionRequest,
   codecForTestingSetTimetravelRequest,
   codecForTransactionByIdRequest,
@@ -799,6 +801,29 @@ async function dispatchRequestInternal<Op extends 
WalletApiOperation>(
       });
       return {};
     }
+    case WalletApiOperation.TestingGetDenomStats: {
+      const req = codecForTestingGetDenomStatsRequest().decode(payload);
+      const denomStats: TestingGetDenomStatsResponse = {
+        numKnown: 0,
+        numLost: 0,
+        numOffered: 0,
+      };
+      await wex.db.runReadOnlyTx(["denominations"], async (tx) => {
+        const denoms = await tx.denominations.indexes.byExchangeBaseUrl.getAll(
+          req.exchangeBaseUrl,
+        );
+        for (const d of denoms) {
+          denomStats.numKnown++;
+          if (d.isOffered) {
+            denomStats.numOffered++;
+          }
+          if (d.isLost) {
+            denomStats.numLost++;
+          }
+        }
+      });
+      return denomStats;
+    }
     case WalletApiOperation.ListExchanges: {
       return await listExchanges(wex);
     }
diff --git 
a/packages/taler-wallet-webextension/src/components/ShowFullContractTermPopup.stories.tsx
 
b/packages/taler-wallet-webextension/src/components/ShowFullContractTermPopup.stories.tsx
index 555b300c2..7142089cb 100644
--- 
a/packages/taler-wallet-webextension/src/components/ShowFullContractTermPopup.stories.tsx
+++ 
b/packages/taler-wallet-webextension/src/components/ShowFullContractTermPopup.stories.tsx
@@ -42,7 +42,6 @@ const cd: WalletContractData = {
     
"0YA1WETV15R6K8QKS79QA3QMT16010F42Q49VSKYQ71HVQKAG0A4ZJCA4YTKHE9EA5SP156TJSKZEJJJ87305N6PS80PC48RNKYZE08",
   orderId: "2022.220-0281XKKB8W7YE",
   summary: "w",
-  maxWireFee: "ARS:1" as AmountString,
   payDeadline: {
     t_s: 1660002673,
   },
diff --git 
a/packages/taler-wallet-webextension/src/components/ShowFullContractTermPopup.tsx
 
b/packages/taler-wallet-webextension/src/components/ShowFullContractTermPopup.tsx
index 953e93b4e..6346b475a 100644
--- 
a/packages/taler-wallet-webextension/src/components/ShowFullContractTermPopup.tsx
+++ 
b/packages/taler-wallet-webextension/src/components/ShowFullContractTermPopup.tsx
@@ -384,14 +384,6 @@ export function ShowView({ contractTerms, hideHandler }: 
States.Show): VNode {
               <Amount value={contractTerms.maxDepositFee} />
             </td>
           </tr>
-          <tr>
-            <td>
-              <i18n.Translate>Max fee</i18n.Translate>
-            </td>
-            <td>
-              <Amount value={contractTerms.maxWireFee} />
-            </td>
-          </tr>
           <tr>
             <td>
               <i18n.Translate>Minimum age</i18n.Translate>

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