From 8aa9ce6d20b41b7eb9b438a56ccd34cb0da35f80 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Thu, 21 Mar 2024 12:11:31 -0300 Subject: wip --- packages/bank-ui/src/Routing.tsx | 11 +- packages/bank-ui/src/app.tsx | 92 ++- packages/bank-ui/src/components/Cashouts/index.ts | 3 +- packages/bank-ui/src/components/Cashouts/test.ts | 2 +- .../bank-ui/src/components/Transactions/index.ts | 26 +- .../bank-ui/src/components/Transactions/views.tsx | 5 +- packages/bank-ui/src/context/config.ts | 2 +- packages/bank-ui/src/hooks/account.ts | 12 +- packages/bank-ui/src/hooks/bank-state.ts | 2 +- packages/bank-ui/src/hooks/regional.ts | 26 +- packages/bank-ui/src/hooks/session.ts | 2 +- packages/bank-ui/src/pages/AccountPage/index.ts | 2 +- packages/bank-ui/src/pages/AccountPage/views.tsx | 2 +- packages/bank-ui/src/pages/BankFrame.tsx | 12 +- packages/bank-ui/src/pages/LoginForm.tsx | 44 +- packages/bank-ui/src/pages/OperationState/index.ts | 18 +- packages/bank-ui/src/pages/OperationState/state.ts | 10 +- .../bank-ui/src/pages/OperationState/views.tsx | 2 +- packages/bank-ui/src/pages/PaymentOptions.tsx | 2 +- .../bank-ui/src/pages/PaytoWireTransferForm.tsx | 6 +- packages/bank-ui/src/pages/ProfileNavigation.tsx | 7 +- packages/bank-ui/src/pages/QrCodeSection.tsx | 6 +- packages/bank-ui/src/pages/RegistrationPage.tsx | 6 +- packages/bank-ui/src/pages/SolveChallengePage.tsx | 8 +- packages/bank-ui/src/pages/WalletWithdrawForm.tsx | 20 +- packages/bank-ui/src/pages/WireTransfer.tsx | 2 +- .../src/pages/WithdrawalConfirmationQuestion.tsx | 6 +- .../bank-ui/src/pages/WithdrawalOperationPage.tsx | 6 +- packages/bank-ui/src/pages/WithdrawalQRCode.tsx | 2 +- .../src/pages/account/CashoutListForAccount.tsx | 2 +- .../src/pages/account/ShowAccountDetails.tsx | 6 +- .../src/pages/account/UpdateAccountPassword.tsx | 6 +- packages/bank-ui/src/pages/admin/AccountForm.tsx | 147 +--- packages/bank-ui/src/pages/admin/AccountList.tsx | 4 +- packages/bank-ui/src/pages/admin/AdminHome.tsx | 12 +- .../bank-ui/src/pages/admin/CreateNewAccount.tsx | 6 +- packages/bank-ui/src/pages/admin/DownloadStats.tsx | 12 +- packages/bank-ui/src/pages/admin/RemoveAccount.tsx | 6 +- .../src/pages/regional/ConversionConfig.tsx | 10 +- .../bank-ui/src/pages/regional/CreateCashout.tsx | 159 +--- .../src/pages/regional/ShowCashoutDetails.tsx | 4 +- packages/bank-ui/src/settings.ts | 9 +- packages/bank-ui/src/stories.test.ts | 9 +- packages/merchant-backoffice-ui/copyleft-header.js | 2 +- .../merchant-backoffice-ui/src/AdminRoutes.tsx | 4 +- .../merchant-backoffice-ui/src/Application.tsx | 225 +++--- .../src/ApplicationReadyRoutes.tsx | 8 +- .../merchant-backoffice-ui/src/InstanceRoutes.tsx | 779 -------------------- packages/merchant-backoffice-ui/src/Rounting.tsx | 802 +++++++++++++++++++++ .../src/components/exception/AsyncButton.tsx | 2 +- .../src/components/exception/QR.tsx | 2 +- .../src/components/exception/loading.tsx | 2 +- .../src/components/form/FormProvider.tsx | 2 +- .../src/components/form/Input.tsx | 2 +- .../src/components/form/InputArray.tsx | 2 +- .../src/components/form/InputBoolean.tsx | 2 +- .../src/components/form/InputCurrency.tsx | 2 +- .../src/components/form/InputDate.tsx | 6 +- .../src/components/form/InputDuration.tsx | 2 +- .../src/components/form/InputGroup.tsx | 2 +- .../src/components/form/InputImage.tsx | 2 +- .../src/components/form/InputLocation.tsx | 2 +- .../src/components/form/InputNumber.tsx | 2 +- .../src/components/form/InputPayto.tsx | 2 +- .../src/components/form/InputPaytoForm.stories.tsx | 2 +- .../src/components/form/InputPaytoForm.tsx | 2 +- .../src/components/form/InputSearchOnList.tsx | 2 +- .../src/components/form/InputSecured.stories.tsx | 2 +- .../src/components/form/InputSecured.tsx | 2 +- .../src/components/form/InputSelector.tsx | 2 +- .../src/components/form/InputStock.stories.tsx | 2 +- .../src/components/form/InputStock.tsx | 2 +- .../src/components/form/InputTab.tsx | 2 +- .../src/components/form/InputTaxes.tsx | 2 +- .../src/components/form/InputToggle.tsx | 2 +- .../src/components/form/InputWithAddon.tsx | 2 +- .../src/components/form/TextField.tsx | 2 +- .../src/components/form/useField.tsx | 2 +- .../src/components/form/useGroupField.tsx | 2 +- .../src/components/index.stories.ts | 2 +- .../instance/DefaultInstanceFormFields.tsx | 2 +- .../src/components/menu/LangSelector.tsx | 2 +- .../src/components/menu/NavigationBar.tsx | 2 +- .../src/components/menu/SideBar.tsx | 2 +- .../src/components/menu/index.tsx | 7 +- .../src/components/modal/index.tsx | 2 +- .../notifications/CreatedSuccessfully.tsx | 2 +- .../notifications/Notifications.stories.tsx | 2 +- .../src/components/notifications/index.tsx | 2 +- .../src/components/picker/DatePicker.tsx | 2 +- .../components/picker/DurationPicker.stories.tsx | 2 +- .../src/components/picker/DurationPicker.tsx | 2 +- .../product/InventoryProductForm.stories.tsx | 2 +- .../components/product/InventoryProductForm.tsx | 2 +- .../components/product/NonInventoryProductForm.tsx | 2 +- .../src/components/product/ProductForm.tsx | 2 +- .../src/components/product/ProductList.tsx | 2 +- .../src/context/backend.test.ts | 2 +- .../merchant-backoffice-ui/src/context/backend.ts | 6 +- .../merchant-backoffice-ui/src/context/config.ts | 2 +- .../merchant-backoffice-ui/src/context/instance.ts | 6 +- .../merchant-backoffice-ui/src/context/settings.ts | 44 ++ packages/merchant-backoffice-ui/src/custom.d.ts | 2 +- .../merchant-backoffice-ui/src/declaration.d.ts | 2 +- packages/merchant-backoffice-ui/src/hooks/async.ts | 2 +- .../merchant-backoffice-ui/src/hooks/backend.ts | 2 +- packages/merchant-backoffice-ui/src/hooks/bank.ts | 2 +- packages/merchant-backoffice-ui/src/hooks/index.ts | 15 +- .../src/hooks/instance.test.ts | 2 +- .../merchant-backoffice-ui/src/hooks/instance.ts | 2 +- .../merchant-backoffice-ui/src/hooks/listener.ts | 2 +- .../merchant-backoffice-ui/src/hooks/merchant.ts | 2 +- .../src/hooks/notifications.ts | 2 +- .../merchant-backoffice-ui/src/hooks/order.test.ts | 2 +- packages/merchant-backoffice-ui/src/hooks/order.ts | 2 +- packages/merchant-backoffice-ui/src/hooks/otp.ts | 2 +- .../merchant-backoffice-ui/src/hooks/preference.ts | 85 +++ .../src/hooks/product.test.ts | 2 +- .../merchant-backoffice-ui/src/hooks/product.ts | 2 +- .../src/hooks/reserve.test.ts | 2 +- .../merchant-backoffice-ui/src/hooks/reserves.ts | 2 +- .../merchant-backoffice-ui/src/hooks/session.ts | 185 +++++ .../merchant-backoffice-ui/src/hooks/templates.ts | 2 +- .../merchant-backoffice-ui/src/hooks/testing.tsx | 2 +- .../src/hooks/transfer.test.ts | 2 +- .../merchant-backoffice-ui/src/hooks/transfer.ts | 2 +- packages/merchant-backoffice-ui/src/hooks/urls.ts | 2 +- .../src/hooks/useSettings.ts | 73 -- .../merchant-backoffice-ui/src/hooks/webhooks.ts | 2 +- packages/merchant-backoffice-ui/src/index.html | 2 +- packages/merchant-backoffice-ui/src/index.tsx | 8 +- .../src/paths/admin/create/Create.stories.tsx | 2 +- .../src/paths/admin/create/CreatePage.tsx | 2 +- .../admin/create/InstanceCreatedSuccessfully.tsx | 2 +- .../src/paths/admin/create/index.tsx | 2 +- .../src/paths/admin/create/stories.tsx | 2 +- .../src/paths/admin/index.stories.ts | 2 +- .../src/paths/admin/list/TableActive.tsx | 2 +- .../src/paths/admin/list/View.stories.tsx | 2 +- .../src/paths/admin/list/View.tsx | 2 +- .../src/paths/admin/list/index.tsx | 2 +- .../instance/accounts/create/Create.stories.tsx | 2 +- .../paths/instance/accounts/create/CreatePage.tsx | 2 +- .../src/paths/instance/accounts/create/index.tsx | 2 +- .../paths/instance/accounts/list/List.stories.tsx | 2 +- .../src/paths/instance/accounts/list/ListPage.tsx | 2 +- .../src/paths/instance/accounts/list/Table.tsx | 2 +- .../src/paths/instance/accounts/list/index.tsx | 2 +- .../instance/accounts/update/Update.stories.tsx | 2 +- .../paths/instance/accounts/update/UpdatePage.tsx | 2 +- .../src/paths/instance/accounts/update/index.tsx | 2 +- .../src/paths/instance/details/DetailPage.tsx | 2 +- .../src/paths/instance/details/index.tsx | 2 +- .../src/paths/instance/details/stories.tsx | 2 +- .../src/paths/instance/index.stories.ts | 2 +- .../paths/instance/kyc/list/ListPage.stories.tsx | 2 +- .../src/paths/instance/kyc/list/ListPage.tsx | 2 +- .../src/paths/instance/kyc/list/index.tsx | 2 +- .../instance/orders/create/Create.stories.tsx | 2 +- .../paths/instance/orders/create/CreatePage.tsx | 6 +- .../orders/create/OrderCreatedSuccessfully.tsx | 2 +- .../src/paths/instance/orders/create/index.tsx | 2 +- .../instance/orders/details/Detail.stories.tsx | 2 +- .../paths/instance/orders/details/DetailPage.tsx | 16 +- .../src/paths/instance/orders/details/Timeline.tsx | 6 +- .../src/paths/instance/orders/details/index.tsx | 2 +- .../paths/instance/orders/list/List.stories.tsx | 2 +- .../src/paths/instance/orders/list/ListPage.tsx | 6 +- .../src/paths/instance/orders/list/Table.tsx | 8 +- .../src/paths/instance/orders/list/index.tsx | 2 +- .../instance/otp_devices/create/Create.stories.tsx | 2 +- .../instance/otp_devices/create/CreatePage.tsx | 2 +- .../otp_devices/create/CreatedSuccessfully.tsx | 2 +- .../paths/instance/otp_devices/create/index.tsx | 2 +- .../instance/otp_devices/list/List.stories.tsx | 2 +- .../paths/instance/otp_devices/list/ListPage.tsx | 2 +- .../src/paths/instance/otp_devices/list/Table.tsx | 2 +- .../src/paths/instance/otp_devices/list/index.tsx | 2 +- .../instance/otp_devices/update/Update.stories.tsx | 2 +- .../instance/otp_devices/update/UpdatePage.tsx | 2 +- .../paths/instance/otp_devices/update/index.tsx | 2 +- .../instance/products/create/Create.stories.tsx | 2 +- .../paths/instance/products/create/CreatePage.tsx | 2 +- .../products/create/CreatedSuccessfully.tsx | 2 +- .../src/paths/instance/products/create/index.tsx | 2 +- .../paths/instance/products/list/List.stories.tsx | 2 +- .../src/paths/instance/products/list/Table.tsx | 6 +- .../src/paths/instance/products/list/index.tsx | 2 +- .../instance/products/update/Update.stories.tsx | 2 +- .../paths/instance/products/update/UpdatePage.tsx | 2 +- .../src/paths/instance/products/update/index.tsx | 2 +- .../instance/templates/create/Create.stories.tsx | 2 +- .../paths/instance/templates/create/CreatePage.tsx | 2 +- .../src/paths/instance/templates/create/index.tsx | 2 +- .../paths/instance/templates/list/List.stories.tsx | 2 +- .../src/paths/instance/templates/list/ListPage.tsx | 2 +- .../src/paths/instance/templates/list/Table.tsx | 2 +- .../src/paths/instance/templates/list/index.tsx | 2 +- .../src/paths/instance/templates/qr/Qr.stories.tsx | 2 +- .../src/paths/instance/templates/qr/QrPage.tsx | 2 +- .../src/paths/instance/templates/qr/index.tsx | 2 +- .../instance/templates/update/Update.stories.tsx | 2 +- .../paths/instance/templates/update/UpdatePage.tsx | 2 +- .../src/paths/instance/templates/update/index.tsx | 2 +- .../paths/instance/templates/use/Use.stories.tsx | 2 +- .../src/paths/instance/templates/use/UsePage.tsx | 2 +- .../src/paths/instance/templates/use/index.tsx | 2 +- .../src/paths/instance/token/DetailPage.tsx | 2 +- .../src/paths/instance/token/index.tsx | 2 +- .../src/paths/instance/token/stories.tsx | 2 +- .../instance/transfers/create/Create.stories.tsx | 2 +- .../paths/instance/transfers/create/CreatePage.tsx | 2 +- .../src/paths/instance/transfers/create/index.tsx | 2 +- .../paths/instance/transfers/list/List.stories.tsx | 2 +- .../src/paths/instance/transfers/list/ListPage.tsx | 2 +- .../src/paths/instance/transfers/list/Table.tsx | 6 +- .../src/paths/instance/transfers/list/index.tsx | 2 +- .../src/paths/instance/transfers/update/index.tsx | 2 +- .../src/paths/instance/update/Update.stories.tsx | 2 +- .../src/paths/instance/update/UpdatePage.tsx | 2 +- .../src/paths/instance/update/index.tsx | 2 +- .../instance/webhooks/create/Create.stories.tsx | 2 +- .../paths/instance/webhooks/create/CreatePage.tsx | 2 +- .../src/paths/instance/webhooks/create/index.tsx | 2 +- .../paths/instance/webhooks/list/List.stories.tsx | 2 +- .../src/paths/instance/webhooks/list/ListPage.tsx | 2 +- .../src/paths/instance/webhooks/list/Table.tsx | 2 +- .../src/paths/instance/webhooks/list/index.tsx | 2 +- .../instance/webhooks/update/Update.stories.tsx | 2 +- .../paths/instance/webhooks/update/UpdatePage.tsx | 2 +- .../src/paths/instance/webhooks/update/index.tsx | 2 +- .../src/paths/login/index.tsx | 339 +++++---- .../src/paths/notfound/index.tsx | 2 +- .../src/paths/settings/index.tsx | 4 +- .../merchant-backoffice-ui/src/schemas/index.ts | 2 +- .../merchant-backoffice-ui/src/scss/_aside.scss | 2 +- .../merchant-backoffice-ui/src/scss/_card.scss | 2 +- .../src/scss/_custom-calendar.scss | 2 +- .../merchant-backoffice-ui/src/scss/_footer.scss | 2 +- .../merchant-backoffice-ui/src/scss/_form.scss | 2 +- .../merchant-backoffice-ui/src/scss/_hero-bar.scss | 2 +- .../merchant-backoffice-ui/src/scss/_loading.scss | 2 +- .../src/scss/_main-section.scss | 2 +- .../merchant-backoffice-ui/src/scss/_misc.scss | 2 +- .../merchant-backoffice-ui/src/scss/_modal.scss | 2 +- .../merchant-backoffice-ui/src/scss/_nav-bar.scss | 2 +- .../merchant-backoffice-ui/src/scss/_table.scss | 2 +- .../src/scss/_theme-default.scss | 2 +- .../merchant-backoffice-ui/src/scss/_tiles.scss | 2 +- .../src/scss/_title-bar.scss | 2 +- .../src/scss/fonts/nunito.css | 2 +- .../merchant-backoffice-ui/src/scss/libs/_all.scss | 2 +- packages/merchant-backoffice-ui/src/scss/main.scss | 2 +- packages/merchant-backoffice-ui/src/settings.ts | 84 +++ .../merchant-backoffice-ui/src/stories.test.ts | 2 +- packages/merchant-backoffice-ui/src/stories.tsx | 2 +- packages/merchant-backoffice-ui/src/sw.js | 2 +- .../merchant-backoffice-ui/src/utils/amount.ts | 2 +- .../merchant-backoffice-ui/src/utils/constants.ts | 4 +- .../merchant-backoffice-ui/src/utils/regex.test.ts | 2 +- packages/merchant-backoffice-ui/src/utils/table.ts | 2 +- packages/merchant-backoffice-ui/src/utils/types.ts | 2 +- packages/taler-util/src/http-client/bank-core.ts | 2 +- packages/taler-util/src/http-client/merchant.ts | 54 +- packages/taler-util/src/index.ts | 1 + packages/web-util/src/context/activity.ts | 65 ++ packages/web-util/src/context/bank-api.ts | 202 ++++++ packages/web-util/src/context/index.ts | 5 +- packages/web-util/src/context/merchant-api.ts | 226 ++++++ packages/web-util/src/context/navigation.ts | 102 +++ .../web-util/src/context/wallet-integration.ts | 83 +++ packages/web-util/src/index.browser.ts | 1 + packages/web-util/src/utils/route.ts | 129 ++++ 273 files changed, 2855 insertions(+), 1875 deletions(-) delete mode 100644 packages/merchant-backoffice-ui/src/InstanceRoutes.tsx create mode 100644 packages/merchant-backoffice-ui/src/Rounting.tsx create mode 100644 packages/merchant-backoffice-ui/src/context/settings.ts create mode 100644 packages/merchant-backoffice-ui/src/hooks/preference.ts create mode 100644 packages/merchant-backoffice-ui/src/hooks/session.ts delete mode 100644 packages/merchant-backoffice-ui/src/hooks/useSettings.ts create mode 100644 packages/merchant-backoffice-ui/src/settings.ts create mode 100644 packages/web-util/src/context/activity.ts create mode 100644 packages/web-util/src/context/bank-api.ts create mode 100644 packages/web-util/src/context/merchant-api.ts create mode 100644 packages/web-util/src/context/navigation.ts create mode 100644 packages/web-util/src/context/wallet-integration.ts create mode 100644 packages/web-util/src/utils/route.ts (limited to 'packages') diff --git a/packages/bank-ui/src/Routing.tsx b/packages/bank-ui/src/Routing.tsx index fbf5aa9ec..489dbe30b 100644 --- a/packages/bank-ui/src/Routing.tsx +++ b/packages/bank-ui/src/Routing.tsx @@ -16,7 +16,11 @@ import { LocalNotificationBanner, + urlPattern, + useBankCoreApiContext, + useCurrentLocation, useLocalNotification, + useNavigationContext, useTranslationContext, } from "@gnu-taler/web-util/browser"; import { Fragment, VNode, h } from "preact"; @@ -29,8 +33,6 @@ import { assertUnreachable, } from "@gnu-taler/taler-util"; import { useEffect } from "preact/hooks"; -import { useBankCoreApiContext } from "./context/config.js"; -import { useNavigationContext } from "./context/navigation.js"; import { useSessionState } from "./hooks/session.js"; import { AccountPage } from "./pages/AccountPage/index.js"; import { BankFrame } from "./pages/BankFrame.js"; @@ -51,7 +53,6 @@ import { RemoveAccount } from "./pages/admin/RemoveAccount.js"; import { ConversionConfig } from "./pages/regional/ConversionConfig.js"; import { CreateCashout } from "./pages/regional/CreateCashout.js"; import { ShowCashoutDetails } from "./pages/regional/ShowCashoutDetails.js"; -import { urlPattern, useCurrentLocation } from "./route.js"; export function Routing(): VNode { const session = useSessionState(); @@ -97,7 +98,7 @@ function PublicRounting({ const { i18n } = useTranslationContext(); const location = useCurrentLocation(publicPages); const { navigateTo } = useNavigationContext(); - const { config, authenticator } = useBankCoreApiContext(); + const { config, lib } = useBankCoreApiContext(); const [notification, notify, handleError] = useLocalNotification(); useEffect(() => { @@ -112,7 +113,7 @@ function PublicRounting({ async function doAutomaticLogin(username: string, password: string) { await handleError(async () => { - const resp = await authenticator(username).createAccessToken(password, { + const resp = await lib.auth(username).createAccessToken(password, { scope: "readwrite", duration: { d_us: "forever" }, refreshable: true, 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, }} > - + - + ); @@ -135,3 +144,74 @@ function getInitialBackendBaseURL( return canonicalizeBaseUrl(window.origin); } } + + +const evictBankSwrCache: CacheEvictor = { + 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 = +{ + async notifySuccess(op) { + switch (op) { + case TalerBankConversionCacheEviction.UPDATE_RATE: { + await revalidateConversionInfo(); + return; + } + default: + assertUnreachable(op); + } + }, +}; diff --git a/packages/bank-ui/src/components/Cashouts/index.ts b/packages/bank-ui/src/components/Cashouts/index.ts index 2c6bf681c..99a946865 100644 --- a/packages/bank-ui/src/components/Cashouts/index.ts +++ b/packages/bank-ui/src/components/Cashouts/index.ts @@ -14,7 +14,7 @@ GNU Taler; see the file COPYING. If not, see */ -import { Loading, utils } from "@gnu-taler/web-util/browser"; +import { Loading, RouteDefinition, utils } from "@gnu-taler/web-util/browser"; import { AbsoluteTime, AmountJson, @@ -25,7 +25,6 @@ import { import { ErrorLoadingWithDebug } from "../ErrorLoadingWithDebug.js"; import { useComponentState } from "./state.js"; import { FailedView, ReadyView } from "./views.js"; -import { RouteDefinition } from "../../route.js"; export interface Props { account: string; diff --git a/packages/bank-ui/src/components/Cashouts/test.ts b/packages/bank-ui/src/components/Cashouts/test.ts index 4bd6b5eac..4ed0d7c11 100644 --- a/packages/bank-ui/src/components/Cashouts/test.ts +++ b/packages/bank-ui/src/components/Cashouts/test.ts @@ -24,7 +24,7 @@ import { SwrMockEnvironment } from "@gnu-taler/web-util/testing"; import { expect } from "chai"; import { Props } from "./index.js"; import { useComponentState } from "./state.js"; -import { buildNullRoutDefinition } from "../../route.js"; +import { buildNullRoutDefinition } from "@gnu-taler/web-util/browser"; describe("Cashout states", () => { it.skip("should query backend and render transactions", async () => { diff --git a/packages/bank-ui/src/components/Transactions/index.ts b/packages/bank-ui/src/components/Transactions/index.ts index 4cad6f306..2f68b2ded 100644 --- a/packages/bank-ui/src/components/Transactions/index.ts +++ b/packages/bank-ui/src/components/Transactions/index.ts @@ -19,17 +19,17 @@ import { Loading, utils } from "@gnu-taler/web-util/browser"; import { ErrorLoadingWithDebug } from "../ErrorLoadingWithDebug.js"; import { useComponentState } from "./state.js"; import { ReadyView } from "./views.js"; -import { RouteDefinition } from "../../route.js"; +import { RouteDefinition } from "@gnu-taler/web-util/browser"; export interface Props { account: string; routeCreateWireTransfer: - | RouteDefinition<{ - account?: string; - subject?: string; - amount?: string; - }> - | undefined; + | RouteDefinition<{ + account?: string; + subject?: string; + amount?: string; + }> + | undefined; } export type State = State.Loading | State.LoadingUriError | State.Ready; @@ -52,12 +52,12 @@ export namespace State { status: "ready"; error: undefined; routeCreateWireTransfer: - | RouteDefinition<{ - account?: string; - subject?: string; - amount?: string; - }> - | undefined; + | RouteDefinition<{ + account?: string; + subject?: string; + amount?: string; + }> + | undefined; transactions: Transaction[]; onGoStart?: () => void; onGoNext?: () => void; diff --git a/packages/bank-ui/src/components/Transactions/views.tsx b/packages/bank-ui/src/components/Transactions/views.tsx index 4397651e2..ebce00a2a 100644 --- a/packages/bank-ui/src/components/Transactions/views.tsx +++ b/packages/bank-ui/src/components/Transactions/views.tsx @@ -14,10 +14,9 @@ GNU Taler; see the file COPYING. If not, see */ -import { Attention, useTranslationContext } from "@gnu-taler/web-util/browser"; +import { Attention, useBankCoreApiContext, useTranslationContext } from "@gnu-taler/web-util/browser"; import { format } from "date-fns"; import { Fragment, VNode, h } from "preact"; -import { useBankCoreApiContext } from "../../context/config.js"; import { RenderAmount } from "../../pages/PaytoWireTransferForm.js"; import { Time } from "../Time.js"; import { State } from "./index.js"; @@ -120,7 +119,7 @@ export function ReadyView({