taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit db7f59127b4c9be70cc64f2c05a0d419ae5b52f7
parent 398ad5686e666533ea4bafbb5a783b66aba0a50d
Author: Sebastian <sebasjm@taler-systems.com>
Date:   Wed, 22 Jul 2026 14:21:02 -0300

only rebuild api when base url change

Diffstat:
Mpackages/web-util/src/context/bank-api.ts | 8+++++---
Mpackages/web-util/src/context/challenger-api.ts | 8+++++---
Mpackages/web-util/src/context/exchange-api.ts | 18++++++++----------
Mpackages/web-util/src/context/merchant-api.ts | 8+++++---
4 files changed, 23 insertions(+), 19 deletions(-)

diff --git a/packages/web-util/src/context/bank-api.ts b/packages/web-util/src/context/bank-api.ts @@ -33,7 +33,7 @@ import { createContext, h, } from "preact"; -import { useContext, useEffect, useState } from "preact/hooks"; +import { useContext, useEffect, useMemo, useState } from "preact/hooks"; import { BrowserFetchHttpLib, ErrorLoading } from "../index.browser.js"; import { APIClient, ActiviyTracker, BankLib, Subscriber } from "./activity.js"; import { useTranslationContext } from "./translation.js"; @@ -90,8 +90,10 @@ export const BankApiProvider = ({ useState<ConfigResult<TalerCorebankApi.TalerCorebankConfigResponse>>(); const { i18n } = useTranslationContext(); - const { getRemoteConfig, VERSION, lib, cancelRequest, onActivity } = - buildBankApiClient(baseUrl, evictors); + const { getRemoteConfig, VERSION, lib, cancelRequest, onActivity } = useMemo( + () => buildBankApiClient(baseUrl, evictors), + [baseUrl.href], + ); useEffect(() => { let keepRetrying = true; diff --git a/packages/web-util/src/context/challenger-api.ts b/packages/web-util/src/context/challenger-api.ts @@ -31,7 +31,7 @@ import { createContext, h, } from "preact"; -import { useContext, useEffect, useState } from "preact/hooks"; +import { useContext, useEffect, useMemo, useState } from "preact/hooks"; import { BrowserFetchHttpLib, ErrorLoading } from "../index.browser.js"; import { APIClient, @@ -92,8 +92,10 @@ export const ChallengerApiProvider = ({ useState<ConfigResult<ChallengerApi.ChallengerTermsOfServiceResponse>>(); const { i18n } = useTranslationContext(); - const { getRemoteConfig, VERSION, lib, cancelRequest, onActivity } = - buildChallengerApiClient(baseUrl, evictors); + const { getRemoteConfig, VERSION, lib, cancelRequest, onActivity } = useMemo( + () => buildChallengerApiClient(baseUrl, evictors), + [baseUrl.href], + ); useEffect(() => { let keepRetrying = true; diff --git a/packages/web-util/src/context/exchange-api.ts b/packages/web-util/src/context/exchange-api.ts @@ -17,8 +17,6 @@ import { CacheEvictor, LibtoolVersion, - makeErrorDetail, - makeTalerErrorDetail, ObservabilityEvent, ObservableHttpClientLibrary, TalerError, @@ -34,7 +32,7 @@ import { createContext, h, } from "preact"; -import { useContext, useEffect, useState } from "preact/hooks"; +import { useContext, useEffect, useMemo, useState } from "preact/hooks"; import { BrowserFetchHttpLib, ErrorLoading, @@ -117,8 +115,10 @@ export const ExchangeApiProvider = ({ const [checked, setChecked] = useState<ConfigResult<KeysAndConfigType>>(); const { i18n } = useTranslationContext(); - const { getRemoteConfig, VERSION, lib, cancelRequest, onActivity } = - buildExchangeApiClient(baseUrl, evictors, !!preventCompression); + const { getRemoteConfig, VERSION, lib, cancelRequest, onActivity } = useMemo( + () => buildExchangeApiClient(baseUrl, evictors, !!preventCompression), + [baseUrl.href, preventCompression], + ); useEffect(() => { let keepRetrying = true; @@ -189,11 +189,9 @@ export const ExchangeApiProvider = ({ }); } - const { lib: unthrottledApi } = buildExchangeApiClient( - baseUrl, - evictors, - !!preventCompression, - true, + const { lib: unthrottledApi } = useMemo( + () => buildExchangeApiClient(baseUrl, evictors, !!preventCompression, true), + [baseUrl.href, preventCompression], ); const value: ExchangeContextType = { diff --git a/packages/web-util/src/context/merchant-api.ts b/packages/web-util/src/context/merchant-api.ts @@ -33,7 +33,7 @@ import { createContext, h, } from "preact"; -import { useContext, useEffect, useState } from "preact/hooks"; +import { useContext, useEffect, useMemo, useState } from "preact/hooks"; import { ErrorLoading } from "../components/ErrorLoadingMerchant.js"; import { BrowserFetchHttpLib, @@ -109,8 +109,10 @@ export const MerchantApiProvider = ({ const [merchantEndpoint, changeMerchantEndpoint] = useState(baseUrl); - const { getRemoteConfig, VERSION, lib, cancelRequest, onActivity } = - buildMerchantApiClient(merchantEndpoint, evictors); + const { getRemoteConfig, VERSION, lib, cancelRequest, onActivity } = useMemo( + () => buildMerchantApiClient(merchantEndpoint, evictors), + [merchantEndpoint.href], + ); useEffect(() => { let keepRetrying = true;