diff options
author | Florian Dold <florian@dold.me> | 2024-03-06 21:15:30 +0100 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2024-03-07 00:03:59 +0100 |
commit | 7ba1d1f3351e58a331e99337afea0fbedb6eb828 (patch) | |
tree | 60b7a485cd317c1fe55276acdc0e055cd9353bfb /packages/taler-wallet-webextension/src/cta | |
parent | 618caa117111b9fed6a792b6816fc724483eb349 (diff) | |
download | wallet-core-7ba1d1f3351e58a331e99337afea0fbedb6eb828.tar.xz |
refactor coin selection, report maxEffectiveSpendAmount
Diffstat (limited to 'packages/taler-wallet-webextension/src/cta')
-rw-r--r-- | packages/taler-wallet-webextension/src/cta/Payment/stories.tsx | 12 | ||||
-rw-r--r-- | packages/taler-wallet-webextension/src/cta/TransferCreate/state.ts | 18 |
2 files changed, 16 insertions, 14 deletions
diff --git a/packages/taler-wallet-webextension/src/cta/Payment/stories.tsx b/packages/taler-wallet-webextension/src/cta/Payment/stories.tsx index a3f00f164..567b5c177 100644 --- a/packages/taler-wallet-webextension/src/cta/Payment/stories.tsx +++ b/packages/taler-wallet-webextension/src/cta/Payment/stories.tsx @@ -59,7 +59,7 @@ export const NoEnoughBalanceAvailable = tests.createExample(BaseView, { balanceAgeAcceptable: "USD:9" as AmountString, balanceMerchantAcceptable: "USD:9" as AmountString, balanceMerchantDepositable: "USD:9" as AmountString, - feeGapEstimate: "USD:1" as AmountString, + maxEffectiveSpendAmount: "USD:9.5" as AmountString, perExchange: {}, }, talerUri: "taler://pay/..", @@ -100,7 +100,7 @@ export const NoEnoughBalanceMaterial = tests.createExample(BaseView, { balanceAgeAcceptable: "USD:9" as AmountString, balanceMerchantAcceptable: "USD:9" as AmountString, balanceMerchantDepositable: "USD:0" as AmountString, - feeGapEstimate: "USD:1" as AmountString, + maxEffectiveSpendAmount: "USD:9.5" as AmountString, perExchange: {}, }, talerUri: "taler://pay/..", @@ -141,7 +141,7 @@ export const NoEnoughBalanceAgeAcceptable = tests.createExample(BaseView, { balanceAgeAcceptable: "USD:9" as AmountString, balanceMerchantAcceptable: "USD:9" as AmountString, balanceMerchantDepositable: "USD:9" as AmountString, - feeGapEstimate: "USD:1" as AmountString, + maxEffectiveSpendAmount: "USD:9.5" as AmountString, perExchange: {}, }, talerUri: "taler://pay/..", @@ -183,7 +183,7 @@ export const NoEnoughBalanceMerchantAcceptable = tests.createExample(BaseView, { balanceAgeAcceptable: "USD:10" as AmountString, balanceMerchantAcceptable: "USD:9" as AmountString, balanceMerchantDepositable: "USD:9" as AmountString, - feeGapEstimate: "USD:1" as AmountString, + maxEffectiveSpendAmount: "USD:9.5" as AmountString, perExchange: {}, }, talerUri: "taler://pay/..", @@ -226,7 +226,7 @@ export const NoEnoughBalanceMerchantDepositable = tests.createExample( balanceAgeAcceptable: "USD:10" as AmountString, balanceMerchantAcceptable: "USD:10" as AmountString, balanceMerchantDepositable: "USD:9" as AmountString, - feeGapEstimate: "USD:1" as AmountString, + maxEffectiveSpendAmount: "USD:9.5" as AmountString, perExchange: {}, }, talerUri: "taler://pay/..", @@ -268,7 +268,7 @@ export const NoEnoughBalanceFeeGap = tests.createExample(BaseView, { balanceAgeAcceptable: "USD:10" as AmountString, balanceMerchantAcceptable: "USD:10" as AmountString, balanceMerchantDepositable: "USD:10" as AmountString, - feeGapEstimate: "USD:1" as AmountString, + maxEffectiveSpendAmount: "USD:9.5" as AmountString, perExchange: {}, }, talerUri: "taler://pay/..", diff --git a/packages/taler-wallet-webextension/src/cta/TransferCreate/state.ts b/packages/taler-wallet-webextension/src/cta/TransferCreate/state.ts index d3cbc66a0..f092801ed 100644 --- a/packages/taler-wallet-webextension/src/cta/TransferCreate/state.ts +++ b/packages/taler-wallet-webextension/src/cta/TransferCreate/state.ts @@ -17,19 +17,18 @@ import { AmountString, Amounts, - TalerError, TalerErrorCode, TalerProtocolTimestamp, } from "@gnu-taler/taler-util"; import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; +import { useTranslationContext } from "@gnu-taler/web-util/browser"; import { isFuture, parse } from "date-fns"; -import { useEffect, useState } from "preact/hooks"; +import { useState } from "preact/hooks"; import { alertFromError, useAlertContext } from "../../context/alert.js"; import { useBackendContext } from "../../context/backend.js"; -import { useTranslationContext } from "@gnu-taler/web-util/browser"; import { useAsyncAsHook } from "../../hooks/useAsyncAsHook.js"; -import { Props, State } from "./index.js"; import { BackgroundError, WxApiType } from "../../wxApi.js"; +import { Props, State } from "./index.js"; export function useComponentState({ amount: amountStr, @@ -164,11 +163,14 @@ async function checkPeerPushDebitAndCheckMax( const material = Amounts.parseOrThrow( e.errorDetail.insufficientBalanceDetails.balanceMaterial, ); - const gap = Amounts.parseOrThrow( - e.errorDetail.insufficientBalanceDetails.feeGapEstimate, - ); - const newAmount = Amounts.sub(material, gap).amount; const amount = Amounts.parseOrThrow(amountState); + const gap = Amounts.sub( + amount, + Amounts.parseOrThrow( + e.errorDetail.insufficientBalanceDetails.maxEffectiveSpendAmount, + ), + ).amount; + const newAmount = Amounts.sub(material, gap).amount; if (Amounts.cmp(newAmount, amount) === 0) { //insufficient balance and the exception didn't give //a good response that allow us to try again |