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:
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;