summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2023-06-20 17:50:30 -0300
committerSebastian <sebasjm@gmail.com>2023-06-20 17:50:44 -0300
commit34e2fd51e038d26c9ea1c0c6770148640669518f (patch)
tree05d961659c2395454334cc17465e6e9b2ebe0284 /packages
parent5c5586df99d16038a81c4c59151a83af227a2fc9 (diff)
downloadwallet-core-34e2fd51e038d26c9ea1c0c6770148640669518f.tar.gz
wallet-core-34e2fd51e038d26c9ea1c0c6770148640669518f.tar.bz2
wallet-core-34e2fd51e038d26c9ea1c0c6770148640669518f.zip
add select max amount
Diffstat (limited to 'packages')
-rw-r--r--packages/taler-wallet-webextension/src/components/AmountField.tsx5
-rw-r--r--packages/taler-wallet-webextension/src/wallet/DestinationSelection/index.ts2
-rw-r--r--packages/taler-wallet-webextension/src/wallet/DestinationSelection/state.ts33
-rw-r--r--packages/taler-wallet-webextension/src/wallet/DestinationSelection/views.tsx6
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>