diff options
Diffstat (limited to 'packages/bank-ui/src/context/config.ts')
-rw-r--r-- | packages/bank-ui/src/context/config.ts | 172 |
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 |