aboutsummaryrefslogtreecommitdiff
path: root/packages/bank-ui
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2024-03-08 15:36:50 -0300
committerSebastian <sebasjm@gmail.com>2024-03-08 15:39:59 -0300
commite92440e257b4df4a232a28701143a4f9db730458 (patch)
tree85c8bc084cf0089de9b7034de6f9db82d58e308e /packages/bank-ui
parent8dea5ac8f41e1d17163a08ba203f15ec372cd442 (diff)
downloadwallet-core-e92440e257b4df4a232a28701143a4f9db730458.tar.xz
fix #8489
Diffstat (limited to 'packages/bank-ui')
-rw-r--r--packages/bank-ui/TODO49
-rw-r--r--packages/bank-ui/src/context/config.ts172
-rw-r--r--packages/bank-ui/src/pages/OperationState/state.ts2
-rw-r--r--packages/bank-ui/src/pages/WithdrawalOperationPage.tsx2
4 files changed, 96 insertions, 129 deletions
diff --git a/packages/bank-ui/TODO b/packages/bank-ui/TODO
deleted file mode 100644
index cc578cce0..000000000
--- a/packages/bank-ui/TODO
+++ /dev/null
@@ -1,49 +0,0 @@
-Urgent TODOs:
-
-- General:
-
- - not only Nora dark-theme, but default light! (CSS)
- - DONE: auto-focus on input fields is not working well
- - DONE: buttons should be visibly insensitive
- as long as required input fields are not
- working
- - DONE: next required invalid/missing input field is
- not properly highlighted in red
- - Logout button needs more padding to the right (CSS)
-
-- Error bar:
- - DONE: hows JSON, should only show good error message
- and numeric code, not JSON syntax
- - should auto-hide after next action, no need for
- "clear"!
- - need variant "status bar" in green (or blue)
- which shows status of last operation
-
-* H1-Titles:
- - Center more (currently way on the left) (CSS)
-
-- Assets:
-
- - Numeric amount needs to be shown MUCH bigger (CSS)
- - Center more? (CSS)
-
-- Payments:
-
- - Amount to withdraw currently shown in white-on-white (CSS)
- - Big frame drawn around notebook-tabs is not nice (CSS)
- - Center more? (CSS)
- - "Wire to bank account"
- - maybe split two types (payto and IBAN) into
- two tabs?
- - currently cannot switch back from payto to IBAN
-
-- Withdraw:
-
- - Should use new 'status' bar at the end, instead
- of extra dialog with "close" button
- - ditto for bank-wire-transfer final stage
-
-- Footer:
- - overlaps with transaction history or other
- content, needs to consistently show at the
- end! => change rendering logic!? (CSS?)
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
diff --git a/packages/bank-ui/src/pages/OperationState/state.ts b/packages/bank-ui/src/pages/OperationState/state.ts
index 5baf2d51c..9c5626cce 100644
--- a/packages/bank-ui/src/pages/OperationState/state.ts
+++ b/packages/bank-ui/src/pages/OperationState/state.ts
@@ -113,7 +113,7 @@ export function useComponentState({
}
const uri = stringifyWithdrawUri({
- bankIntegrationApiBaseUrl: bank.getIntegrationAPI(),
+ bankIntegrationApiBaseUrl: bank.getIntegrationAPI().href,
withdrawalOperationId,
});
const parsedUri = parseWithdrawUri(uri);
diff --git a/packages/bank-ui/src/pages/WithdrawalOperationPage.tsx b/packages/bank-ui/src/pages/WithdrawalOperationPage.tsx
index 973a23011..b91fecd9d 100644
--- a/packages/bank-ui/src/pages/WithdrawalOperationPage.tsx
+++ b/packages/bank-ui/src/pages/WithdrawalOperationPage.tsx
@@ -38,7 +38,7 @@ export function WithdrawalOperationPage({
}): VNode {
const { bank: api } = useBankCoreApiContext();
const uri = stringifyWithdrawUri({
- bankIntegrationApiBaseUrl: api.getIntegrationAPI(),
+ bankIntegrationApiBaseUrl: api.getIntegrationAPI().href,
withdrawalOperationId: operationId,
});
const parsedUri = parseWithdrawUri(uri);