diff options
Diffstat (limited to 'packages/bank-ui/src/app.tsx')
-rw-r--r-- | packages/bank-ui/src/app.tsx | 92 |
1 files changed, 86 insertions, 6 deletions
diff --git a/packages/bank-ui/src/app.tsx b/packages/bank-ui/src/app.tsx index 893942059..434c132ed 100644 --- a/packages/bank-ui/src/app.tsx +++ b/packages/bank-ui/src/app.tsx @@ -15,22 +15,28 @@ */ import { + CacheEvictor, + TalerBankConversionCacheEviction, + TalerCoreBankCacheEviction, + assertUnreachable, canonicalizeBaseUrl, getGlobalLogLevel, setGlobalLogLevelFromString, } from "@gnu-taler/taler-util"; -import { Loading, TranslationProvider } from "@gnu-taler/web-util/browser"; +import { BankApiProvider, BrowserHashNavigationProvider, Loading, TalerWalletIntegrationBrowserProvider, TranslationProvider } from "@gnu-taler/web-util/browser"; import { h } from "preact"; import { useEffect, useState } from "preact/hooks"; import { SWRConfig } from "swr"; import { Routing } from "./Routing.js"; -import { BankCoreApiProvider } from "./context/config.js"; -import { BrowserHashNavigationProvider } from "./context/navigation.js"; +// import { BankCoreApiProvider } from "./context/config.js"; +// import { BrowserHashNavigationProvider } from "./context/navigation.js"; import { SettingsProvider } from "./context/settings.js"; -import { TalerWalletIntegrationBrowserProvider } from "./context/wallet-integration.js"; +// import { TalerWalletIntegrationBrowserProvider } from "./context/wallet-integration.js"; import { strings } from "./i18n/strings.js"; import { BankFrame } from "./pages/BankFrame.js"; import { BankUiSettings, fetchSettings } from "./settings.js"; +import { revalidateAccountDetails, revalidatePublicAccounts, revalidateTransactions } from "./hooks/account.js"; +import { revalidateBusinessAccounts, revalidateCashouts, revalidateConversionInfo } from "./hooks/regional.js"; const WITH_LOCAL_STORAGE_CACHE = false; export function App() { @@ -50,7 +56,10 @@ export function App() { de: strings["de"].completeness, }} > - <BankCoreApiProvider baseUrl={baseUrl} frameOnError={BankFrame}> + <BankApiProvider baseUrl={new URL("/", baseUrl)} frameOnError={BankFrame} evictors={{ + bank: evictBankSwrCache, + conversion: evictConversionSwrCache, + }}> <SWRConfig value={{ provider: WITH_LOCAL_STORAGE_CACHE @@ -84,7 +93,7 @@ export function App() { </BrowserHashNavigationProvider> </TalerWalletIntegrationBrowserProvider> </SWRConfig> - </BankCoreApiProvider> + </BankApiProvider> </TranslationProvider> </SettingsProvider> ); @@ -135,3 +144,74 @@ function getInitialBackendBaseURL( return canonicalizeBaseUrl(window.origin); } } + + +const evictBankSwrCache: CacheEvictor<TalerCoreBankCacheEviction> = { + async notifySuccess(op) { + switch (op) { + case TalerCoreBankCacheEviction.DELETE_ACCOUNT: { + await Promise.all([ + revalidatePublicAccounts(), + revalidateBusinessAccounts(), + ]); + return; + } + case TalerCoreBankCacheEviction.CREATE_ACCOUNT: { + // admin balance change on new account + await Promise.all([ + revalidateAccountDetails(), + revalidateTransactions(), + revalidatePublicAccounts(), + revalidateBusinessAccounts(), + ]); + return; + } + case TalerCoreBankCacheEviction.UPDATE_ACCOUNT: { + await Promise.all([revalidateAccountDetails()]); + return; + } + case TalerCoreBankCacheEviction.CREATE_TRANSACTION: { + await Promise.all([ + revalidateAccountDetails(), + revalidateTransactions(), + ]); + return; + } + case TalerCoreBankCacheEviction.CONFIRM_WITHDRAWAL: { + await Promise.all([ + revalidateAccountDetails(), + revalidateTransactions(), + ]); + return; + } + case TalerCoreBankCacheEviction.CREATE_CASHOUT: { + await Promise.all([ + revalidateAccountDetails(), + revalidateCashouts(), + revalidateTransactions(), + ]); + return; + } + case TalerCoreBankCacheEviction.UPDATE_PASSWORD: + case TalerCoreBankCacheEviction.ABORT_WITHDRAWAL: + case TalerCoreBankCacheEviction.CREATE_WITHDRAWAL: + return; + default: + assertUnreachable(op); + } + }, +}; + +const evictConversionSwrCache: CacheEvictor<TalerBankConversionCacheEviction> = +{ + async notifySuccess(op) { + switch (op) { + case TalerBankConversionCacheEviction.UPDATE_RATE: { + await revalidateConversionInfo(); + return; + } + default: + assertUnreachable(op); + } + }, +}; |