commit fc75c5c399176bff7dc1ca5f88b71fed804cc55b
parent 0c7e9f86c50db87cd2668e97357d8de4d3295ef7
Author: Sebastian <sebasjm@gmail.com>
Date: Tue, 9 Jul 2024 16:27:12 -0300
cache cleanup for token family
Diffstat:
2 files changed, 34 insertions(+), 18 deletions(-)
diff --git a/packages/merchant-backoffice-ui/src/Application.tsx b/packages/merchant-backoffice-ui/src/Application.tsx
@@ -79,6 +79,10 @@ import {
revalidateOrderDetails,
} from "./hooks/order.js";
import { SessionContextProvider } from "./context/session.js";
+import {
+ revalidateTokenFamilies,
+ revalidateTokenFamilyDetails,
+} from "./hooks/tokenfamily.js";
const WITH_LOCAL_STORAGE_CACHE = false;
export function Application(): VNode {
@@ -345,23 +349,21 @@ const swrCacheEvictor = new (class
await Promise.all([revalidateInstanceOrders()]);
return;
}
- case TalerMerchantInstanceCacheEviction.LAST:
- // case TalerMerchantInstanceCacheEviction.CREATE_TOKENFAMILY:{
- // await Promise.all([
- // reva
- // ])
- // return
- // }
- // case TalerMerchantInstanceCacheEviction.UPDATE_TOKENFAMILY:{
- // await Promise.all([
- // ])
- // return
- // }
- // case TalerMerchantInstanceCacheEviction.DELETE_TOKENFAMILY:{
- // await Promise.all([
- // ])
- // return
- // }
+ case TalerMerchantInstanceCacheEviction.CREATE_TOKENFAMILY: {
+ await Promise.all([revalidateTokenFamilies()]);
+ return;
+ }
+ case TalerMerchantInstanceCacheEviction.UPDATE_TOKENFAMILY: {
+ await Promise.all([revalidateTokenFamilyDetails()]);
+ return;
+ }
+ case TalerMerchantInstanceCacheEviction.DELETE_TOKENFAMILY: {
+ await Promise.all([revalidateTokenFamilies()]);
+ return;
+ }
+ case TalerMerchantInstanceCacheEviction.LAST: {
+ return;
+ }
}
}
})();
diff --git a/packages/merchant-backoffice-ui/src/hooks/tokenfamily.ts b/packages/merchant-backoffice-ui/src/hooks/tokenfamily.ts
@@ -17,9 +17,16 @@ import { useSessionContext } from "../context/session.js";
// FIX default import https://github.com/microsoft/TypeScript/issues/49189
import { AccessToken, TalerHttpError, TalerMerchantApi, TalerMerchantManagementResultByMethod } from "@gnu-taler/taler-util";
-import _useSWR, { SWRHook } from "swr";
+import _useSWR, { SWRHook, mutate } from "swr";
const useSWR = _useSWR as unknown as SWRHook;
+export function revalidateTokenFamilies() {
+ return mutate(
+ (key) => Array.isArray(key) && key[key.length - 1] === "listTokenFamilies",
+ undefined,
+ { revalidate: true },
+ );
+}
export function useInstanceTokenFamilies() {
const { state, lib } = useSessionContext();
@@ -45,6 +52,13 @@ export function useInstanceTokenFamilies() {
return data;
}
+export function revalidateTokenFamilyDetails() {
+ return mutate(
+ (key) => Array.isArray(key) && key[key.length - 1] === "getTokenFamilyDetails",
+ undefined,
+ { revalidate: true },
+ );
+}
export function useTokenFamilyDetails(tokenFamilySlug: string) {
const { state, lib } = useSessionContext();