aboutsummaryrefslogtreecommitdiff
path: root/packages/merchant-backoffice-ui/src/Application.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/merchant-backoffice-ui/src/Application.tsx')
-rw-r--r--packages/merchant-backoffice-ui/src/Application.tsx383
1 files changed, 196 insertions, 187 deletions
diff --git a/packages/merchant-backoffice-ui/src/Application.tsx b/packages/merchant-backoffice-ui/src/Application.tsx
index d5a05e821..097e98567 100644
--- a/packages/merchant-backoffice-ui/src/Application.tsx
+++ b/packages/merchant-backoffice-ui/src/Application.tsx
@@ -19,14 +19,21 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
-import { CacheEvictor, TalerMerchantApi, TalerMerchantInstanceCacheEviction, TalerMerchantManagementCacheEviction, assertUnreachable, canonicalizeBaseUrl } from "@gnu-taler/taler-util";
+import {
+ CacheEvictor,
+ TalerMerchantApi,
+ TalerMerchantInstanceCacheEviction,
+ TalerMerchantManagementCacheEviction,
+ assertUnreachable,
+ canonicalizeBaseUrl,
+} from "@gnu-taler/taler-util";
import {
BrowserHashNavigationProvider,
ConfigResultFail,
MerchantApiProvider,
TalerWalletIntegrationBrowserProvider,
TranslationProvider,
- useTranslationContext
+ useTranslationContext,
} from "@gnu-taler/web-util/browser";
import { VNode, h } from "preact";
import { useEffect, useState } from "preact/hooks";
@@ -35,16 +42,43 @@ import { Routing } from "./Routing.js";
import { Loading } from "./components/exception/loading.js";
import { NotificationCard } from "./components/menu/index.js";
import { SettingsProvider } from "./context/settings.js";
-import { revalidateBankAccountDetails, revalidateInstanceBankAccounts } from "./hooks/bank.js";
-import { revalidateBackendInstances, revalidateInstanceDetails, revalidateManagedInstanceDetails } from "./hooks/instance.js";
-import { revalidateInstanceOtpDevices, revalidateOtpDeviceDetails } from "./hooks/otp.js";
-import { revalidateInstanceProducts, revalidateProductDetails } from "./hooks/product.js";
-import { revalidateInstanceTemplates, revalidateTemplateDetails } from "./hooks/templates.js";
+import {
+ revalidateBankAccountDetails,
+ revalidateInstanceBankAccounts,
+} from "./hooks/bank.js";
+import {
+ revalidateBackendInstances,
+ revalidateInstanceDetails,
+ revalidateManagedInstanceDetails,
+} from "./hooks/instance.js";
+import {
+ revalidateInstanceOtpDevices,
+ revalidateOtpDeviceDetails,
+} from "./hooks/otp.js";
+import {
+ revalidateInstanceProducts,
+ revalidateProductDetails,
+} from "./hooks/product.js";
+import {
+ revalidateInstanceTemplates,
+ revalidateTemplateDetails,
+} from "./hooks/templates.js";
import { revalidateInstanceTransfers } from "./hooks/transfer.js";
-import { revalidateInstanceWebhooks, revalidateWebhookDetails } from "./hooks/webhooks.js";
+import {
+ revalidateInstanceWebhooks,
+ revalidateWebhookDetails,
+} from "./hooks/webhooks.js";
import { strings } from "./i18n/strings.js";
-import { MerchantUiSettings, buildDefaultBackendBaseURL, fetchSettings } from "./settings.js";
-import { revalidateInstanceOrders, revalidateOrderDetails } from "./hooks/order.js";
+import {
+ MerchantUiSettings,
+ buildDefaultBackendBaseURL,
+ fetchSettings,
+} from "./settings.js";
+import {
+ revalidateInstanceOrders,
+ revalidateOrderDetails,
+} from "./hooks/order.js";
+import { SessionContextProvider } from "./context/session.js";
const WITH_LOCAL_STORAGE_CACHE = false;
export function Application(): VNode {
@@ -64,42 +98,48 @@ export function Application(): VNode {
de: strings["de"].completeness,
}}
>
- <MerchantApiProvider baseUrl={new URL("./", baseUrl)} frameOnError={OnConfigError} evictors={{
- management: swrCacheEvictor
- }}>
- <SWRConfig
- value={{
- provider: WITH_LOCAL_STORAGE_CACHE
- ? localStorageProvider
- : undefined,
- // normally, do not revalidate
- revalidateOnFocus: false,
- revalidateOnReconnect: false,
- revalidateIfStale: false,
- revalidateOnMount: undefined,
- focusThrottleInterval: undefined,
+ <MerchantApiProvider
+ baseUrl={new URL("./", baseUrl)}
+ frameOnError={OnConfigError}
+ evictors={{
+ management: swrCacheEvictor,
+ }}
+ >
+ <SessionContextProvider>
+ <SWRConfig
+ value={{
+ provider: WITH_LOCAL_STORAGE_CACHE
+ ? localStorageProvider
+ : undefined,
+ // normally, do not revalidate
+ revalidateOnFocus: false,
+ revalidateOnReconnect: false,
+ revalidateIfStale: false,
+ revalidateOnMount: undefined,
+ focusThrottleInterval: undefined,
- // normally, do not refresh
- refreshInterval: undefined,
- dedupingInterval: 2000,
- refreshWhenHidden: false,
- refreshWhenOffline: false,
+ // normally, do not refresh
+ refreshInterval: undefined,
+ dedupingInterval: 2000,
+ refreshWhenHidden: false,
+ refreshWhenOffline: false,
- // ignore errors
- shouldRetryOnError: false,
- errorRetryCount: 0,
- errorRetryInterval: undefined,
+ // ignore errors
+ shouldRetryOnError: false,
+ errorRetryCount: 0,
+ errorRetryInterval: undefined,
- // do not go to loading again if already has data
- keepPreviousData: true,
- }}
- >
- <TalerWalletIntegrationBrowserProvider>
- <BrowserHashNavigationProvider>
- <Routing />
- </BrowserHashNavigationProvider>
- </TalerWalletIntegrationBrowserProvider>
- </SWRConfig>
+ // do not go to loading again if already has data
+ keepPreviousData: true,
+ }}
+ >
+ <TalerWalletIntegrationBrowserProvider>
+ <BrowserHashNavigationProvider>
+ <Routing />
+ </BrowserHashNavigationProvider>
+ </TalerWalletIntegrationBrowserProvider>
+ </SWRConfig>
+ </SessionContextProvider>
</MerchantApiProvider>
</TranslationProvider>
</SettingsProvider>
@@ -150,187 +190,157 @@ function localStorageProvider(): Map<unknown, unknown> {
return map;
}
-function OnConfigError({ state }: { state: ConfigResultFail<TalerMerchantApi.VersionResponse> | undefined }): VNode {
+function OnConfigError({
+ state,
+}: {
+ state: ConfigResultFail<TalerMerchantApi.VersionResponse> | undefined;
+}): VNode {
const { i18n } = useTranslationContext();
if (!state) {
- return <i18n.Translate>checking compatibility with server...</i18n.Translate>
+ return (
+ <i18n.Translate>checking compatibility with server...</i18n.Translate>
+ );
}
switch (state.type) {
case "error": {
- return <NotificationCard
- notification={{
- message: i18n.str`Contacting the server failed`,
- description: state.error.message,
- details: JSON.stringify(state.error.errorDetail, undefined, 2),
- type: "ERROR",
- }}
- />
+ return (
+ <NotificationCard
+ notification={{
+ message: i18n.str`Contacting the server failed`,
+ description: state.error.message,
+ details: JSON.stringify(state.error.errorDetail, undefined, 2),
+ type: "ERROR",
+ }}
+ />
+ );
}
case "incompatible": {
- return <NotificationCard
- notification={{
- message: i18n.str`The server version is not supported`,
- description: i18n.str`Supported version "${state.supported}", server version "${state.result.version}".`,
- type: "WARN",
- }}
- />
+ return (
+ <NotificationCard
+ notification={{
+ message: i18n.str`The server version is not supported`,
+ description: i18n.str`Supported version "${state.supported}", server version "${state.result.version}".`,
+ type: "WARN",
+ }}
+ />
+ );
}
- default: assertUnreachable(state)
+ default:
+ assertUnreachable(state);
}
}
-const swrCacheEvictor= new class implements CacheEvictor<TalerMerchantManagementCacheEviction | TalerMerchantInstanceCacheEviction> {
- async notifySuccess(op: TalerMerchantManagementCacheEviction | TalerMerchantInstanceCacheEviction) {
- switch(op) {
+const swrCacheEvictor = new (class
+ implements
+ CacheEvictor<
+ TalerMerchantManagementCacheEviction | TalerMerchantInstanceCacheEviction
+ >
+{
+ async notifySuccess(
+ op:
+ | TalerMerchantManagementCacheEviction
+ | TalerMerchantInstanceCacheEviction,
+ ) {
+ switch (op) {
case TalerMerchantManagementCacheEviction.CREATE_INSTANCE: {
- await Promise.all([
- revalidateBackendInstances()
- ])
- return
+ await Promise.all([revalidateBackendInstances()]);
+ return;
}
case TalerMerchantManagementCacheEviction.UPDATE_INSTANCE: {
- await Promise.all([
- revalidateManagedInstanceDetails()
- ])
- return
+ await Promise.all([revalidateManagedInstanceDetails()]);
+ return;
}
- case TalerMerchantManagementCacheEviction.DELETE_INSTANCE:{
- await Promise.all([
- revalidateBackendInstances()
- ])
- return
+ case TalerMerchantManagementCacheEviction.DELETE_INSTANCE: {
+ await Promise.all([revalidateBackendInstances()]);
+ return;
}
- case TalerMerchantInstanceCacheEviction.UPDATE_CURRENT_INSTANCE:{
- await Promise.all([
- revalidateInstanceDetails()
- ])
- return
+ case TalerMerchantInstanceCacheEviction.UPDATE_CURRENT_INSTANCE: {
+ await Promise.all([revalidateInstanceDetails()]);
+ return;
}
- case TalerMerchantInstanceCacheEviction.DELETE_CURRENT_INSTANCE:{
- await Promise.all([
- revalidateInstanceDetails()
- ])
- return
+ case TalerMerchantInstanceCacheEviction.DELETE_CURRENT_INSTANCE: {
+ await Promise.all([revalidateInstanceDetails()]);
+ return;
}
- case TalerMerchantInstanceCacheEviction.CREATE_BANK_ACCOUNT:{
- await Promise.all([
- revalidateInstanceBankAccounts()
- ])
- return
+ case TalerMerchantInstanceCacheEviction.CREATE_BANK_ACCOUNT: {
+ await Promise.all([revalidateInstanceBankAccounts()]);
+ return;
}
- case TalerMerchantInstanceCacheEviction.UPDATE_BANK_ACCOUNT:{
- await Promise.all([
- revalidateBankAccountDetails()
- ])
- return
+ case TalerMerchantInstanceCacheEviction.UPDATE_BANK_ACCOUNT: {
+ await Promise.all([revalidateBankAccountDetails()]);
+ return;
}
- case TalerMerchantInstanceCacheEviction.DELETE_BANK_ACCOUNT:{
- await Promise.all([
- revalidateInstanceBankAccounts()
- ])
- return
+ case TalerMerchantInstanceCacheEviction.DELETE_BANK_ACCOUNT: {
+ await Promise.all([revalidateInstanceBankAccounts()]);
+ return;
}
- case TalerMerchantInstanceCacheEviction.CREATE_PRODUCT:{
- await Promise.all([
- revalidateInstanceProducts()
- ])
- return
+ case TalerMerchantInstanceCacheEviction.CREATE_PRODUCT: {
+ await Promise.all([revalidateInstanceProducts()]);
+ return;
}
- case TalerMerchantInstanceCacheEviction.UPDATE_PRODUCT:{
- await Promise.all([
- revalidateProductDetails()
- ])
- return
+ case TalerMerchantInstanceCacheEviction.UPDATE_PRODUCT: {
+ await Promise.all([revalidateProductDetails()]);
+ return;
}
- case TalerMerchantInstanceCacheEviction.DELETE_PRODUCT:{
- await Promise.all([
- revalidateInstanceProducts()
- ])
- return
+ case TalerMerchantInstanceCacheEviction.DELETE_PRODUCT: {
+ await Promise.all([revalidateInstanceProducts()]);
+ return;
}
- case TalerMerchantInstanceCacheEviction.CREATE_TRANSFER:{
- await Promise.all([
- revalidateInstanceTransfers()
- ])
- return
+ case TalerMerchantInstanceCacheEviction.CREATE_TRANSFER: {
+ await Promise.all([revalidateInstanceTransfers()]);
+ return;
}
- case TalerMerchantInstanceCacheEviction.DELETE_TRANSFER:{
- await Promise.all([
- revalidateInstanceTransfers()
- ])
- return
+ case TalerMerchantInstanceCacheEviction.DELETE_TRANSFER: {
+ await Promise.all([revalidateInstanceTransfers()]);
+ return;
}
- case TalerMerchantInstanceCacheEviction.CREATE_DEVICE:{
- await Promise.all([
- revalidateInstanceOtpDevices()
- ])
- return
+ case TalerMerchantInstanceCacheEviction.CREATE_DEVICE: {
+ await Promise.all([revalidateInstanceOtpDevices()]);
+ return;
}
- case TalerMerchantInstanceCacheEviction.UPDATE_DEVICE:{
- await Promise.all([
- revalidateOtpDeviceDetails()
- ])
- return
+ case TalerMerchantInstanceCacheEviction.UPDATE_DEVICE: {
+ await Promise.all([revalidateOtpDeviceDetails()]);
+ return;
}
- case TalerMerchantInstanceCacheEviction.DELETE_DEVICE:{
- await Promise.all([
- revalidateInstanceOtpDevices()
- ])
- return
+ case TalerMerchantInstanceCacheEviction.DELETE_DEVICE: {
+ await Promise.all([revalidateInstanceOtpDevices()]);
+ return;
}
- case TalerMerchantInstanceCacheEviction.CREATE_TEMPLATE:{
- await Promise.all([
- revalidateInstanceTemplates()
- ])
- return
+ case TalerMerchantInstanceCacheEviction.CREATE_TEMPLATE: {
+ await Promise.all([revalidateInstanceTemplates()]);
+ return;
}
- case TalerMerchantInstanceCacheEviction.UPDATE_TEMPLATE:{
- await Promise.all([
- revalidateTemplateDetails()
- ])
- return
+ case TalerMerchantInstanceCacheEviction.UPDATE_TEMPLATE: {
+ await Promise.all([revalidateTemplateDetails()]);
+ return;
}
- case TalerMerchantInstanceCacheEviction.DELETE_TEMPLATE:{
- await Promise.all([
- revalidateInstanceTemplates()
- ])
- return
+ case TalerMerchantInstanceCacheEviction.DELETE_TEMPLATE: {
+ await Promise.all([revalidateInstanceTemplates()]);
+ return;
}
- case TalerMerchantInstanceCacheEviction.CREATE_WEBHOOK:{
- await Promise.all([
- revalidateInstanceWebhooks()
- ])
- return
+ case TalerMerchantInstanceCacheEviction.CREATE_WEBHOOK: {
+ await Promise.all([revalidateInstanceWebhooks()]);
+ return;
}
- case TalerMerchantInstanceCacheEviction.UPDATE_WEBHOOK:{
- await Promise.all([
- revalidateWebhookDetails()
- ])
- return
+ case TalerMerchantInstanceCacheEviction.UPDATE_WEBHOOK: {
+ await Promise.all([revalidateWebhookDetails()]);
+ return;
}
- case TalerMerchantInstanceCacheEviction.DELETE_WEBHOOK:{
- await Promise.all([
- revalidateInstanceWebhooks()
- ])
- return
+ case TalerMerchantInstanceCacheEviction.DELETE_WEBHOOK: {
+ await Promise.all([revalidateInstanceWebhooks()]);
+ return;
}
- case TalerMerchantInstanceCacheEviction.CREATE_ORDER:{
- await Promise.all([
- revalidateInstanceOrders()
- ])
- return
+ case TalerMerchantInstanceCacheEviction.CREATE_ORDER: {
+ await Promise.all([revalidateInstanceOrders()]);
+ return;
}
case TalerMerchantInstanceCacheEviction.UPDATE_ORDER: {
- await Promise.all([
- revalidateOrderDetails()
- ])
- return
+ await Promise.all([revalidateOrderDetails()]);
+ return;
}
case TalerMerchantInstanceCacheEviction.DELETE_ORDER: {
- await Promise.all([
- revalidateInstanceOrders()
- ])
- return
+ await Promise.all([revalidateInstanceOrders()]);
+ return;
}
case TalerMerchantInstanceCacheEviction.LAST:
// case TalerMerchantInstanceCacheEviction.CREATE_TOKENFAMILY:{
@@ -351,5 +361,4 @@ const swrCacheEvictor= new class implements CacheEvictor<TalerMerchantManagement
// }
}
}
-
-}
+})();