From 73dabdf43a55849ac5ca571f938d5dd847b03404 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 8 Dec 2021 11:03:50 +0100 Subject: webextension: fix useEffect dependency tracking --- packages/taler-wallet-webextension/src/cta/Pay.tsx | 5 ++++- packages/taler-wallet-webextension/src/hooks/useAsyncAsHook.ts | 9 ++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) (limited to 'packages/taler-wallet-webextension/src') diff --git a/packages/taler-wallet-webextension/src/cta/Pay.tsx b/packages/taler-wallet-webextension/src/cta/Pay.tsx index f1c8f270c..7b7d940c7 100644 --- a/packages/taler-wallet-webextension/src/cta/Pay.tsx +++ b/packages/taler-wallet-webextension/src/cta/Pay.tsx @@ -134,6 +134,8 @@ export function PayPage({ const foundAmount = foundBalance ? Amounts.parseOrThrow(foundBalance.available) : undefined; + // We use a string here so that dependency tracking for useEffect works properly + const foundAmountStr = foundAmount ? Amounts.stringify(foundAmount) : undefined; useEffect(() => { if (!talerPayUri) return; @@ -142,6 +144,7 @@ export function PayPage({ const p = await wxApi.preparePay(talerPayUri); setPayStatus(p); } catch (e) { + console.log("Got error while trying to pay", e); if (e instanceof OperationFailedError) { setPayErrMsg(e); } @@ -151,7 +154,7 @@ export function PayPage({ } }; doFetch(); - }, [talerPayUri, foundAmount]); + }, [talerPayUri, foundAmountStr]); if (!talerPayUri) { return missing pay uri; diff --git a/packages/taler-wallet-webextension/src/hooks/useAsyncAsHook.ts b/packages/taler-wallet-webextension/src/hooks/useAsyncAsHook.ts index 38ec5bf72..e9f03d0fa 100644 --- a/packages/taler-wallet-webextension/src/hooks/useAsyncAsHook.ts +++ b/packages/taler-wallet-webextension/src/hooks/useAsyncAsHook.ts @@ -13,7 +13,7 @@ You should have received a copy of the GNU General Public License along with TALER; see the file COPYING. If not, see */ -import { ExchangesListRespose, NotificationType } from "@gnu-taler/taler-util"; +import { NotificationType } from "@gnu-taler/taler-util"; import { useEffect, useState } from "preact/hooks"; import * as wxApi from "../wxApi"; @@ -30,7 +30,10 @@ interface HookError { export type HookResponse = HookOk | HookError | undefined; //"withdraw-group-finished" -export function useAsyncAsHook(fn: () => Promise, updateOnNotification?: Array): HookResponse { +export function useAsyncAsHook( + fn: () => Promise, + updateOnNotification?: Array, +): HookResponse { const [result, setHookResponse] = useState>(undefined); useEffect(() => { async function doAsync() { @@ -46,7 +49,7 @@ export function useAsyncAsHook(fn: () => Promise, updateOnNotification?: A doAsync(); if (updateOnNotification && updateOnNotification.length > 0) { return wxApi.onUpdateNotification(updateOnNotification, () => { - doAsync() + doAsync(); }); } }, []); -- cgit v1.2.3