summaryrefslogtreecommitdiff
path: root/packages/bank-ui/src/context/config.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/bank-ui/src/context/config.ts')
-rw-r--r--packages/bank-ui/src/context/config.ts172
1 files changed, 94 insertions, 78 deletions
diff --git a/packages/bank-ui/src/context/config.ts b/packages/bank-ui/src/context/config.ts
index 39d12be86..cb0d599aa 100644
--- a/packages/bank-ui/src/context/config.ts
+++ b/packages/bank-ui/src/context/config.ts
@@ -15,27 +15,29 @@
*/
import {
- assertUnreachable,
LibtoolVersion,
+ ObservableHttpClientLibrary,
+ TalerAuthenticationHttpClient,
TalerBankConversionCacheEviction,
TalerBankConversionHttpClient,
- TalerCorebankApi,
- TalerAuthenticationHttpClient,
TalerCoreBankCacheEviction,
TalerCoreBankHttpClient,
- TalerError
+ TalerCorebankApi,
+ TalerError,
+ assertUnreachable,
+ CacheEvictor,
} from "@gnu-taler/taler-util";
import {
- BrowserHttpLib,
+ BrowserFetchHttpLib,
ErrorLoading,
- useTranslationContext,
+ useTranslationContext
} from "@gnu-taler/web-util/browser";
import {
ComponentChildren,
- createContext,
FunctionComponent,
- h,
VNode,
+ createContext,
+ h,
} from "preact";
import { useContext, useEffect, useState } from "preact/hooks";
import {
@@ -164,78 +166,20 @@ export const BankCoreApiProvider = ({
* @returns
*/
function buildApiClient(url: URL) {
- const httpLib = new BrowserHttpLib();
-
- const bankClient = new TalerCoreBankHttpClient(url.href, httpLib, {
- async notifySuccess(op) {
- switch (op) {
- case TalerCoreBankCacheEviction.DELELE_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 httpFetch = new BrowserFetchHttpLib({
+ enableThrottling: true,
+ requireTls: false,
});
- const conversionClient = new TalerBankConversionHttpClient(bankClient.getConversionInfoAPI(), httpLib, {
- async notifySuccess(op) {
- switch (op) {
- case TalerBankConversionCacheEviction.UPDATE_RATE: {
- await revalidateConversionInfo();
- return
- }
- default:
- assertUnreachable(op)
- }
+ const httpLib = new ObservableHttpClientLibrary(httpFetch, {
+ observe(ev) {
+ console.log(ev)
}
- });
- const authClient = (user: string) => new TalerAuthenticationHttpClient(bankClient.getAuthenticationAPI(user), user, httpLib);
+ })
+
+ const bankClient = new TalerCoreBankHttpClient(url.href, httpLib, evictBankSwrCache);
+ const conversionClient = new TalerBankConversionHttpClient(bankClient.getConversionInfoAPI().href, httpLib, evictConversionSwrCache);
+ const authClient = (user: string) => new TalerAuthenticationHttpClient(bankClient.getAuthenticationAPI(user).href, user, httpLib);
+
return { bankClient, conversionClient, authClient }
}
@@ -261,3 +205,75 @@ export const BankCoreApiProviderTesting = ({
children,
});
};
+
+
+const evictBankSwrCache: CacheEvictor<TalerCoreBankCacheEviction> = {
+ async notifySuccess(op) {
+ switch (op) {
+ case TalerCoreBankCacheEviction.DELELE_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)
+ }
+ }
+} \ No newline at end of file