diff options
| author | Sebastian <sebasjm@gmail.com> | 2023-06-20 17:50:30 -0300 | 
|---|---|---|
| committer | Sebastian <sebasjm@gmail.com> | 2023-06-20 17:50:44 -0300 | 
| commit | 34e2fd51e038d26c9ea1c0c6770148640669518f (patch) | |
| tree | 05d961659c2395454334cc17465e6e9b2ebe0284 /packages/taler-wallet-webextension | |
| parent | 5c5586df99d16038a81c4c59151a83af227a2fc9 (diff) | |
add select max amount
Diffstat (limited to 'packages/taler-wallet-webextension')
4 files changed, 29 insertions, 17 deletions
| diff --git a/packages/taler-wallet-webextension/src/components/AmountField.tsx b/packages/taler-wallet-webextension/src/components/AmountField.tsx index 432aa6af1..c330c72b5 100644 --- a/packages/taler-wallet-webextension/src/components/AmountField.tsx +++ b/packages/taler-wallet-webextension/src/components/AmountField.tsx @@ -24,7 +24,7 @@ import {    TranslatedString,  } from "@gnu-taler/taler-util";  import { Fragment, h, VNode } from "preact"; -import { useState } from "preact/hooks"; +import { useEffect, useState } from "preact/hooks";  import { useTranslationContext } from "@gnu-taler/web-util/browser";  import { AmountFieldHandler } from "../mui/handlers.js";  import { TextField } from "../mui/TextField.js"; @@ -56,6 +56,9 @@ export function AmountField({    const previousValue = Amounts.stringifyValue(normal);    const [textValue, setTextValue] = useState<string>(previousValue); +  useEffect(() => { +    setTextValue(previousValue); +  }, [previousValue]);    function updateUnit(newUnit: number) {      setUnit(newUnit); diff --git a/packages/taler-wallet-webextension/src/wallet/DestinationSelection/index.ts b/packages/taler-wallet-webextension/src/wallet/DestinationSelection/index.ts index 7724ec2be..b56fe5523 100644 --- a/packages/taler-wallet-webextension/src/wallet/DestinationSelection/index.ts +++ b/packages/taler-wallet-webextension/src/wallet/DestinationSelection/index.ts @@ -70,7 +70,7 @@ export namespace State {      error: undefined;      type: Props["type"];      selectCurrency: ButtonHandler; -    sendAll: ButtonHandler; +    selectMax: ButtonHandler;      previous: Contact[];      goToBank: ButtonHandler;      goToWallet: ButtonHandler; diff --git a/packages/taler-wallet-webextension/src/wallet/DestinationSelection/state.ts b/packages/taler-wallet-webextension/src/wallet/DestinationSelection/state.ts index e42b1dbf9..a5d44e872 100644 --- a/packages/taler-wallet-webextension/src/wallet/DestinationSelection/state.ts +++ b/packages/taler-wallet-webextension/src/wallet/DestinationSelection/state.ts @@ -14,14 +14,14 @@   GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>   */ -import { Amounts, TransactionType } from "@gnu-taler/taler-util"; +import { Amounts } from "@gnu-taler/taler-util";  import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; -import { useEffect, useState } from "preact/hooks"; +import { useTranslationContext } from "@gnu-taler/web-util/browser"; +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 { assertUnreachable, RecursiveState } from "../../utils/index.js"; +import { RecursiveState, assertUnreachable } from "../../utils/index.js";  import { Contact, Props, State } from "./index.js";  export function useComponentState(props: Props): RecursiveState<State> { @@ -130,13 +130,16 @@ export function useComponentState(props: Props): RecursiveState<State> {                  props.goToWalletBankDeposit(currencyAndAmount);                }),          }, -        sendAll: { -          onClick: -            info === undefined -              ? undefined -              : pushAlertOnError(async () => { -                  setAmount(info.balance.balanceMerchantDepositable); -                }), +        selectMax: { +          onClick: pushAlertOnError(async () => { +            const resp = await api.wallet.call( +              WalletApiOperation.GetMaxDepositAmount, +              { +                currency: amount.currency, +              }, +            ); +            setAmount(Amounts.parseOrThrow(resp.effectiveAmount)); +          }),          },          goToWallet: {            onClick: invalid @@ -161,7 +164,13 @@ export function useComponentState(props: Props): RecursiveState<State> {              setAmount(undefined);            }),          }, -        sendAll: {}, +        selectMax: { +          onClick: invalid +            ? undefined +            : pushAlertOnError(async () => { +                props.goToWalletManualWithdraw(currencyAndAmount); +              }), +        },          goToBank: {            onClick: invalid              ? undefined diff --git a/packages/taler-wallet-webextension/src/wallet/DestinationSelection/views.tsx b/packages/taler-wallet-webextension/src/wallet/DestinationSelection/views.tsx index c230c1490..f8e2c6707 100644 --- a/packages/taler-wallet-webextension/src/wallet/DestinationSelection/views.tsx +++ b/packages/taler-wallet-webextension/src/wallet/DestinationSelection/views.tsx @@ -203,7 +203,7 @@ export function ReadyGetView({    return (      <Container>        <h1> -        <i18n.Translate>Specify the amount and the origin2</i18n.Translate> +        <i18n.Translate>Specify the amount and the origin</i18n.Translate>        </h1>        <Grid container columns={2} justifyContent="space-between">          <AmountField @@ -287,7 +287,7 @@ export function ReadySendView({    goToBank,    goToWallet,    previous, -  sendAll, +  selectMax,  }: State.Ready): VNode {    const { i18n } = useTranslationContext(); @@ -304,7 +304,7 @@ export function ReadySendView({            handler={amountHandler}          />          <EnabledBySettings name="advanceMode"> -          <Button onClick={sendAll.onClick}> +          <Button onClick={selectMax.onClick}>              <i18n.Translate>Send all</i18n.Translate>            </Button>          </EnabledBySettings> | 
