summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-webextension/src/cta/InvoiceCreate
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2022-11-16 16:04:52 -0300
committerSebastian <sebasjm@gmail.com>2022-11-16 16:05:13 -0300
commit1a63d56bfdd091cc7aefdf1e25f3a074bfdf5e0e (patch)
tree7255cf4a5b51af4807e2a01a370497413a78968f /packages/taler-wallet-webextension/src/cta/InvoiceCreate
parent53164dc47b1138235a0c797affaa6fb37ea43239 (diff)
downloadwallet-core-1a63d56bfdd091cc7aefdf1e25f3a074bfdf5e0e.tar.gz
wallet-core-1a63d56bfdd091cc7aefdf1e25f3a074bfdf5e0e.tar.bz2
wallet-core-1a63d56bfdd091cc7aefdf1e25f3a074bfdf5e0e.zip
fix #7411, also making the backup payment visible
Diffstat (limited to 'packages/taler-wallet-webextension/src/cta/InvoiceCreate')
-rw-r--r--packages/taler-wallet-webextension/src/cta/InvoiceCreate/state.ts87
1 files changed, 54 insertions, 33 deletions
diff --git a/packages/taler-wallet-webextension/src/cta/InvoiceCreate/state.ts b/packages/taler-wallet-webextension/src/cta/InvoiceCreate/state.ts
index 27f05ce03..4ce81dad8 100644
--- a/packages/taler-wallet-webextension/src/cta/InvoiceCreate/state.ts
+++ b/packages/taler-wallet-webextension/src/cta/InvoiceCreate/state.ts
@@ -15,7 +15,11 @@
*/
/* eslint-disable react-hooks/rules-of-hooks */
-import { Amounts, TalerErrorDetail, TalerProtocolTimestamp } from "@gnu-taler/taler-util";
+import {
+ Amounts,
+ TalerErrorDetail,
+ TalerProtocolTimestamp,
+} from "@gnu-taler/taler-util";
import { TalerError, WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { isFuture, parse } from "date-fns";
import { useState } from "preact/hooks";
@@ -32,7 +36,9 @@ export function useComponentState(
): RecursiveState<State> {
const amount = Amounts.parseOrThrow(amountStr);
- const hook = useAsyncAsHook(() => api.wallet.call(WalletApiOperation.ListExchanges, {}));
+ const hook = useAsyncAsHook(() =>
+ api.wallet.call(WalletApiOperation.ListExchanges, {}),
+ );
if (!hook) {
return {
@@ -51,7 +57,7 @@ export function useComponentState(
return () => {
const [subject, setSubject] = useState<string | undefined>();
- const [timestamp, setTimestamp] = useState<string | undefined>()
+ const [timestamp, setTimestamp] = useState<string | undefined>();
const [operationError, setOperationError] = useState<
TalerErrorDetail | undefined
@@ -70,45 +76,51 @@ export function useComponentState(
const exchange = selectedExchange.selected;
const hook = useAsyncAsHook(async () => {
- const resp = await api.wallet.call(WalletApiOperation.PreparePeerPullPayment, {
- amount: amountStr,
- exchangeBaseUrl: exchange.exchangeBaseUrl,
- })
- return resp
- })
+ const resp = await api.wallet.call(
+ WalletApiOperation.PreparePeerPullPayment,
+ {
+ amount: amountStr,
+ exchangeBaseUrl: exchange.exchangeBaseUrl,
+ },
+ );
+ return resp;
+ });
if (!hook) {
return {
status: "loading",
- error: undefined
- }
+ error: undefined,
+ };
}
if (hook.hasError) {
return {
status: "loading-uri",
- error: hook
- }
+ error: hook,
+ };
}
- const { amountEffective, amountRaw } = hook.response
- const requestAmount = Amounts.parseOrThrow(amountRaw)
- const toBeReceived = Amounts.parseOrThrow(amountEffective)
+ const { amountEffective, amountRaw } = hook.response;
+ const requestAmount = Amounts.parseOrThrow(amountRaw);
+ const toBeReceived = Amounts.parseOrThrow(amountEffective);
- let purse_expiration: TalerProtocolTimestamp | undefined = undefined
+ let purse_expiration: TalerProtocolTimestamp | undefined = undefined;
let timestampError: string | undefined = undefined;
- const t = timestamp === undefined ? undefined : parse(timestamp, "dd/MM/yyyy", new Date())
+ const t =
+ timestamp === undefined
+ ? undefined
+ : parse(timestamp, "dd/MM/yyyy", new Date());
if (t !== undefined) {
if (Number.isNaN(t.getTime())) {
- timestampError = 'Should have the format "dd/MM/yyyy"'
+ timestampError = 'Should have the format "dd/MM/yyyy"';
} else {
if (!isFuture(t)) {
- timestampError = 'Should be in the future'
+ timestampError = "Should be in the future";
} else {
purse_expiration = {
- t_s: t.getTime() / 1000
- }
+ t_s: t.getTime() / 1000,
+ };
}
}
}
@@ -116,14 +128,17 @@ export function useComponentState(
async function accept(): Promise<void> {
if (!subject || !purse_expiration) return;
try {
- const resp = await api.wallet.call(WalletApiOperation.InitiatePeerPullPayment, {
- exchangeBaseUrl: exchange.exchangeBaseUrl,
- partialContractTerms: {
- amount: Amounts.stringify(amount),
- summary: subject,
- purse_expiration
+ const resp = await api.wallet.call(
+ WalletApiOperation.InitiatePeerPullPayment,
+ {
+ exchangeBaseUrl: exchange.exchangeBaseUrl,
+ partialContractTerms: {
+ amount: Amounts.stringify(amount),
+ summary: subject,
+ purse_expiration,
+ },
},
- });
+ );
onSuccess(resp.transactionId);
} catch (e) {
@@ -134,12 +149,18 @@ export function useComponentState(
throw Error("error trying to accept");
}
}
- const unableToCreate = !subject || Amounts.isZero(amount) || !purse_expiration
+ const unableToCreate =
+ !subject || Amounts.isZero(amount) || !purse_expiration;
return {
status: "ready",
subject: {
- error: subject === undefined ? undefined : !subject ? "Can't be empty" : undefined,
+ error:
+ subject === undefined
+ ? undefined
+ : !subject
+ ? "Can't be empty"
+ : undefined,
value: subject ?? "",
onInput: async (e) => setSubject(e),
},
@@ -147,8 +168,8 @@ export function useComponentState(
error: timestampError,
value: timestamp === undefined ? "" : timestamp,
onInput: async (e) => {
- setTimestamp(e)
- }
+ setTimestamp(e);
+ },
},
doSelectExchange: selectedExchange.doSelect,
exchangeUrl: exchange.exchangeBaseUrl,