@progressive-development/pd-spa-helper 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/AuthController.d.ts +37 -0
- package/dist/auth/AuthController.d.ts.map +1 -0
- package/dist/auth/AuthController.js +65 -0
- package/dist/auth/auth-directives.d.ts +59 -0
- package/dist/auth/auth-directives.d.ts.map +1 -0
- package/dist/auth/auth-directives.js +81 -0
- package/dist/auth/auth-utils.d.ts +45 -0
- package/dist/auth/auth-utils.d.ts.map +1 -0
- package/dist/auth/auth-utils.js +42 -0
- package/dist/auth/index.d.ts +7 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/components/default-login/DefaultLogin.d.ts +15 -0
- package/dist/components/default-login/DefaultLogin.d.ts.map +1 -0
- package/dist/components/default-login/DefaultLogin.js +120 -0
- package/dist/components/default-not-found/DefaultNotFound.d.ts +6 -0
- package/dist/components/default-not-found/DefaultNotFound.d.ts.map +1 -0
- package/dist/{defaultpage/default-not-found.js → components/default-not-found/DefaultNotFound.js} +10 -3
- package/dist/components/pd-section-page/PdSectionPage.d.ts +55 -0
- package/dist/components/pd-section-page/PdSectionPage.d.ts.map +1 -0
- package/dist/components/pd-section-page/PdSectionPage.js +37 -0
- package/dist/components/pd-spa-helper/PdSpaHelper.d.ts +196 -0
- package/dist/components/pd-spa-helper/PdSpaHelper.d.ts.map +1 -0
- package/dist/components/pd-spa-helper/PdSpaHelper.js +603 -0
- package/dist/components/pd-spa-helper/controllers/ScrollController.d.ts +77 -0
- package/dist/components/pd-spa-helper/controllers/ScrollController.d.ts.map +1 -0
- package/dist/components/pd-spa-helper/controllers/ScrollController.js +102 -0
- package/dist/components/pd-spa-helper/spa-config.d.ts +95 -0
- package/dist/components/pd-spa-helper/spa-config.d.ts.map +1 -0
- package/dist/components/pd-spa-helper/spa-config.js +175 -0
- package/dist/components/pd-spa-helper/spa-events.d.ts +132 -0
- package/dist/components/pd-spa-helper/spa-events.d.ts.map +1 -0
- package/dist/components/pd-spa-helper/spa-events.js +18 -0
- package/dist/db/index.d.ts +3 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/{store → db}/indexDB.d.ts +9 -9
- package/dist/db/indexDB.d.ts.map +1 -0
- package/dist/{store → db}/indexDB.js +14 -12
- package/dist/generated/locales/be.d.ts +1 -15
- package/dist/generated/locales/be.d.ts.map +1 -1
- package/dist/generated/locales/be.js +1 -15
- package/dist/generated/locales/de.d.ts +1 -15
- package/dist/generated/locales/de.d.ts.map +1 -1
- package/dist/generated/locales/de.js +1 -15
- package/dist/generated/locales/en.d.ts +1 -15
- package/dist/generated/locales/en.d.ts.map +1 -1
- package/dist/generated/locales/en.js +1 -15
- package/dist/helper/logger.d.ts +11 -12
- package/dist/helper/logger.d.ts.map +1 -1
- package/dist/helper/logger.js +10 -49
- package/dist/helper/refresh-id-token.d.ts.map +1 -1
- package/dist/helper/refresh-id-token.js +6 -4
- package/dist/index.d.ts +31 -29
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -50
- package/dist/model/index.d.ts +4 -0
- package/dist/model/index.d.ts.map +1 -0
- package/dist/model/spa-model.d.ts +14 -15
- package/dist/model/spa-model.d.ts.map +1 -1
- package/dist/router/PdRouterService.d.ts +4 -1
- package/dist/router/PdRouterService.d.ts.map +1 -1
- package/dist/router/PdRouterService.js +40 -16
- package/dist/router/index.d.ts +3 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/screen-size/ScreenSizeController.d.ts +34 -0
- package/dist/screen-size/ScreenSizeController.d.ts.map +1 -0
- package/dist/screen-size/ScreenSizeController.js +58 -0
- package/dist/screen-size/ScreenSizeService.d.ts +49 -0
- package/dist/screen-size/ScreenSizeService.d.ts.map +1 -0
- package/dist/screen-size/ScreenSizeService.js +107 -0
- package/dist/screen-size/index.d.ts +13 -0
- package/dist/screen-size/index.d.ts.map +1 -0
- package/dist/screen-size/responsive-directives.d.ts +59 -0
- package/dist/screen-size/responsive-directives.d.ts.map +1 -0
- package/dist/screen-size/responsive-directives.js +71 -0
- package/dist/screen-size/types.d.ts +44 -0
- package/dist/screen-size/types.d.ts.map +1 -0
- package/dist/service-provider/ServiceRegistry.d.ts +67 -0
- package/dist/service-provider/ServiceRegistry.d.ts.map +1 -0
- package/dist/service-provider/ServiceRegistry.js +76 -0
- package/dist/service-provider/function-utils.d.ts +55 -0
- package/dist/service-provider/function-utils.d.ts.map +1 -0
- package/dist/service-provider/function-utils.js +30 -0
- package/dist/service-provider/index.d.ts +10 -0
- package/dist/service-provider/index.d.ts.map +1 -0
- package/dist/service-provider/interfaces/IAuthProvider.d.ts +68 -0
- package/dist/service-provider/interfaces/IAuthProvider.d.ts.map +1 -0
- package/dist/service-provider/interfaces/IDatabaseProvider.d.ts +75 -0
- package/dist/service-provider/interfaces/IDatabaseProvider.d.ts.map +1 -0
- package/dist/service-provider/interfaces/IFunctionProvider.d.ts +49 -0
- package/dist/service-provider/interfaces/IFunctionProvider.d.ts.map +1 -0
- package/dist/service-provider/interfaces/IStorageProvider.d.ts +118 -0
- package/dist/service-provider/interfaces/IStorageProvider.d.ts.map +1 -0
- package/dist/service-provider/interfaces/ServiceProvider.d.ts +24 -0
- package/dist/service-provider/interfaces/ServiceProvider.d.ts.map +1 -0
- package/dist/service-provider/interfaces/common.d.ts +5 -0
- package/dist/service-provider/interfaces/common.d.ts.map +1 -0
- package/dist/service-provider/service-provider-model.d.ts +55 -10
- package/dist/service-provider/service-provider-model.d.ts.map +1 -1
- package/dist/services/fire-once-service.d.ts +35 -0
- package/dist/services/fire-once-service.d.ts.map +1 -0
- package/dist/services/fire-once-service.js +61 -0
- package/dist/store/async-action-effects.d.ts +179 -0
- package/dist/store/async-action-effects.d.ts.map +1 -0
- package/dist/store/async-action-effects.js +98 -0
- package/dist/store/async-action-utils.d.ts +154 -0
- package/dist/store/async-action-utils.d.ts.map +1 -0
- package/dist/store/async-action-utils.js +42 -0
- package/dist/store/index.d.ts +9 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/mini-rx.store.d.ts.map +1 -1
- package/dist/store/mini-rx.store.js +1 -3
- package/dist/store/spa-app-actions.d.ts +5 -22
- package/dist/store/spa-app-actions.d.ts.map +1 -1
- package/dist/store/spa-app-actions.js +4 -8
- package/dist/store/spa-app-effects.d.ts +0 -17
- package/dist/store/spa-app-effects.d.ts.map +1 -1
- package/dist/store/spa-app-effects.js +2 -40
- package/dist/store/spa-app-reducer.d.ts +5 -10
- package/dist/store/spa-app-reducer.d.ts.map +1 -1
- package/dist/store/spa-app-reducer.js +13 -8
- package/dist/store/spa-app-selector.d.ts +2 -2
- package/dist/store/spa-app-selector.d.ts.map +1 -1
- package/dist/store/spa-app-selector.js +1 -1
- package/dist/stories/introduction.stories.d.ts +11 -0
- package/dist/stories/introduction.stories.d.ts.map +1 -0
- package/package.json +14 -9
- package/dist/PdSpaHelper.d.ts +0 -83
- package/dist/PdSpaHelper.d.ts.map +0 -1
- package/dist/PdSpaHelper.js +0 -492
- package/dist/defaultpage/default-confirm-popup.d.ts +0 -19
- package/dist/defaultpage/default-confirm-popup.d.ts.map +0 -1
- package/dist/defaultpage/default-confirm-popup.js +0 -70
- package/dist/defaultpage/default-dialog-popup.d.ts +0 -19
- package/dist/defaultpage/default-dialog-popup.d.ts.map +0 -1
- package/dist/defaultpage/default-dialog-popup.js +0 -103
- package/dist/defaultpage/default-login.d.ts +0 -6
- package/dist/defaultpage/default-login.d.ts.map +0 -1
- package/dist/defaultpage/default-login.js +0 -33
- package/dist/defaultpage/default-not-found.d.ts +0 -6
- package/dist/defaultpage/default-not-found.d.ts.map +0 -1
- package/dist/defaultpage/default-popup.d.ts +0 -7
- package/dist/defaultpage/default-popup.d.ts.map +0 -1
- package/dist/defaultpage/default-popup.js +0 -24
- package/dist/defaultpage/default-step-address.d.ts +0 -14
- package/dist/defaultpage/default-step-address.d.ts.map +0 -1
- package/dist/defaultpage/default-step-address.js +0 -77
- package/dist/defaultpage/default-step-summary.d.ts +0 -28
- package/dist/defaultpage/default-step-summary.d.ts.map +0 -1
- package/dist/defaultpage/default-step-summary.js +0 -67
- package/dist/defaultpage/default-view-page.d.ts +0 -10
- package/dist/defaultpage/default-view-page.d.ts.map +0 -1
- package/dist/defaultpage/default-view-page.js +0 -70
- package/dist/defaultpage/default-wizard.d.ts +0 -37
- package/dist/defaultpage/default-wizard.d.ts.map +0 -1
- package/dist/defaultpage/default-wizard.js +0 -255
- package/dist/defaultpage/pd-default-wizard-step.d.ts +0 -60
- package/dist/defaultpage/pd-default-wizard-step.d.ts.map +0 -1
- package/dist/defaultpage/pd-default-wizard-step.js +0 -144
- package/dist/generated/locale-wrapper/be-wrapper.d.ts +0 -63
- package/dist/generated/locale-wrapper/be-wrapper.d.ts.map +0 -1
- package/dist/generated/locale-wrapper/de-wrapper.d.ts +0 -63
- package/dist/generated/locale-wrapper/de-wrapper.d.ts.map +0 -1
- package/dist/generated/locale-wrapper/en-wrapper.d.ts +0 -63
- package/dist/generated/locale-wrapper/en-wrapper.d.ts.map +0 -1
- package/dist/helper/blob-helper.d.ts +0 -3
- package/dist/helper/blob-helper.d.ts.map +0 -1
- package/dist/helper/blob-helper.js +0 -35
- package/dist/helper/date-helper.d.ts +0 -27
- package/dist/helper/date-helper.d.ts.map +0 -1
- package/dist/helper/date-helper.js +0 -129
- package/dist/helper/locale-format.d.ts +0 -4
- package/dist/helper/locale-format.d.ts.map +0 -1
- package/dist/helper/locale-format.js +0 -16
- package/dist/helper/number-helper.d.ts +0 -2
- package/dist/helper/number-helper.d.ts.map +0 -1
- package/dist/helper/number-helper.js +0 -13
- package/dist/helper/price-helper.d.ts +0 -5
- package/dist/helper/price-helper.d.ts.map +0 -1
- package/dist/helper/price-helper.js +0 -22
- package/dist/helper/text-helper.d.ts +0 -3
- package/dist/helper/text-helper.d.ts.map +0 -1
- package/dist/helper/text-helper.js +0 -4
- package/dist/popup/wizard-close-popup.d.ts +0 -11
- package/dist/popup/wizard-close-popup.d.ts.map +0 -1
- package/dist/popup/wizard-close-popup.js +0 -63
- package/dist/popup/wizard-reload-popup.d.ts +0 -14
- package/dist/popup/wizard-reload-popup.d.ts.map +0 -1
- package/dist/popup/wizard-reload-popup.js +0 -76
- package/dist/service-provider/firebase/auth.d.ts +0 -19
- package/dist/service-provider/firebase/auth.d.ts.map +0 -1
- package/dist/service-provider/firebase/auth.js +0 -62
- package/dist/service-provider/firebase/firestorage-client.d.ts +0 -22
- package/dist/service-provider/firebase/firestorage-client.d.ts.map +0 -1
- package/dist/service-provider/firebase/firestorage-client.js +0 -226
- package/dist/service-provider/firebase/firestore-client.d.ts +0 -12
- package/dist/service-provider/firebase/firestore-client.d.ts.map +0 -1
- package/dist/service-provider/firebase/firestore-client.js +0 -25
- package/dist/service-provider/firebase/functions-client.d.ts +0 -10
- package/dist/service-provider/firebase/functions-client.d.ts.map +0 -1
- package/dist/service-provider/firebase/functions-client.js +0 -63
- package/dist/service-provider/firebase/messagingFirebaseClient.d.ts +0 -9
- package/dist/service-provider/firebase/messagingFirebaseClient.d.ts.map +0 -1
- package/dist/service-provider/firebase/messagingFirebaseClient.js +0 -69
- package/dist/service-provider/mock/auth.d.ts +0 -6
- package/dist/service-provider/mock/auth.d.ts.map +0 -1
- package/dist/service-provider/mock/auth.js +0 -60
- package/dist/service-provider/mock/function-client.d.ts +0 -7
- package/dist/service-provider/mock/function-client.d.ts.map +0 -1
- package/dist/service-provider/mock/function-client.js +0 -30
- package/dist/service-provider/mock/storage-client.d.ts +0 -11
- package/dist/service-provider/mock/storage-client.d.ts.map +0 -1
- package/dist/service-provider/mock/storage-client.js +0 -106
- package/dist/service-provider/service-provider-impl.d.ts +0 -27
- package/dist/service-provider/service-provider-impl.d.ts.map +0 -1
- package/dist/service-provider/service-provider-impl.js +0 -222
- package/dist/store/indexDB.d.ts.map +0 -1
- package/dist/stories/address-edit.stories.d.ts +0 -27
- package/dist/stories/address-edit.stories.d.ts.map +0 -1
- package/dist/stories/address-new.stories.d.ts +0 -33
- package/dist/stories/address-new.stories.d.ts.map +0 -1
- package/dist/stories/default-confirm-popup.stories.d.ts +0 -24
- package/dist/stories/default-confirm-popup.stories.d.ts.map +0 -1
- package/dist/stories/default-dialog-popup.stories.d.ts +0 -23
- package/dist/stories/default-dialog-popup.stories.d.ts.map +0 -1
- package/dist/stories/default-login.stories.d.ts +0 -10
- package/dist/stories/default-login.stories.d.ts.map +0 -1
- package/dist/stories/default-popup.stories.d.ts +0 -9
- package/dist/stories/default-popup.stories.d.ts.map +0 -1
- package/dist/stories/pd-loading-state.stories.d.ts +0 -30
- package/dist/stories/pd-loading-state.stories.d.ts.map +0 -1
- package/dist/stories/pd-toast.stories.d.ts +0 -27
- package/dist/stories/pd-toast.stories.d.ts.map +0 -1
- package/dist/stories/routing.stories.d.ts +0 -24
- package/dist/stories/routing.stories.d.ts.map +0 -1
- package/dist/stories/test-impls/address-test.d.ts +0 -6
- package/dist/stories/test-impls/address-test.d.ts.map +0 -1
- package/dist/stories/test-impls/test-mock-app.d.ts +0 -15
- package/dist/stories/test-impls/test-mock-app.d.ts.map +0 -1
- package/dist/stories/test-impls/test-pages/test-home-page.d.ts +0 -7
- package/dist/stories/test-impls/test-pages/test-home-page.d.ts.map +0 -1
- package/dist/stories/test-impls/test-pages/test-not-found-page.d.ts +0 -5
- package/dist/stories/test-impls/test-pages/test-not-found-page.d.ts.map +0 -1
- package/dist/stories/test-impls/test-pages/test-wizard-step.d.ts +0 -17
- package/dist/stories/test-impls/test-pages/test-wizard-step.d.ts.map +0 -1
- package/dist/stories/test-impls/test-pages/test-wizard.d.ts +0 -16
- package/dist/stories/test-impls/test-pages/test-wizard.d.ts.map +0 -1
- package/dist/stories/test-impls/test-popups/default-confirm-popup-test-error.d.ts +0 -8
- package/dist/stories/test-impls/test-popups/default-confirm-popup-test-error.d.ts.map +0 -1
- package/dist/stories/test-impls/test-popups/default-confirm-popup-test-info.d.ts +0 -8
- package/dist/stories/test-impls/test-popups/default-confirm-popup-test-info.d.ts.map +0 -1
- package/dist/stories/test-impls/test-popups/default-confirm-popup-test-warn.d.ts +0 -8
- package/dist/stories/test-impls/test-popups/default-confirm-popup-test-warn.d.ts.map +0 -1
- package/dist/stories/test-impls/test-popups/default-dialog-popup-test.d.ts +0 -13
- package/dist/stories/test-impls/test-popups/default-dialog-popup-test.d.ts.map +0 -1
- package/dist/stories/test-impls/test-popups/default-popup-test.d.ts +0 -5
- package/dist/stories/test-impls/test-popups/default-popup-test.d.ts.map +0 -1
- package/dist/stories/test-wizard-step.stories.d.ts +0 -11
- package/dist/stories/test-wizard-step.stories.d.ts.map +0 -1
- package/dist/stories/test-wizard.stories.d.ts +0 -9
- package/dist/stories/test-wizard.stories.d.ts.map +0 -1
- package/dist/tmpown/pd-loading-state.d.ts +0 -9
- package/dist/tmpown/pd-loading-state.d.ts.map +0 -1
- package/dist/tmpown/pd-loading-state.js +0 -196
- package/dist/tmpown/pd-login.d.ts +0 -13
- package/dist/tmpown/pd-login.d.ts.map +0 -1
- package/dist/tmpown/pd-login.js +0 -165
- package/dist/tmpown/pd-toast.d.ts +0 -13
- package/dist/tmpown/pd-toast.d.ts.map +0 -1
- package/dist/tmpown/pd-toast.js +0 -127
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { FirebaseOptions } from 'firebase/app';
|
|
2
2
|
import { TemplateResult } from 'lit';
|
|
3
|
+
import { BgConfig } from '@progressive-development/pd-model';
|
|
3
4
|
export declare const SC_INVALID_USER = -150;
|
|
4
5
|
export declare const SC_TECHNICAL_FAILURE = -180;
|
|
5
6
|
export declare class BusinessError extends Error {
|
|
@@ -31,13 +32,14 @@ export interface FunctionDefinition {
|
|
|
31
32
|
fadeWindow: boolean;
|
|
32
33
|
successTxt: string | TemplateResult;
|
|
33
34
|
pendingTxt: string | TemplateResult;
|
|
34
|
-
|
|
35
|
+
/** Additional parameters passed to the function */
|
|
36
|
+
param?: Record<string, unknown>;
|
|
35
37
|
redirect?: string;
|
|
36
38
|
logoutOnFail?: boolean;
|
|
37
39
|
}
|
|
38
40
|
export interface FunctionParam {
|
|
39
41
|
func: FunctionDefinition;
|
|
40
|
-
inputData:
|
|
42
|
+
inputData: unknown;
|
|
41
43
|
}
|
|
42
44
|
export interface FunctionsConfig {
|
|
43
45
|
region: string;
|
|
@@ -52,6 +54,7 @@ export interface MenuElement {
|
|
|
52
54
|
name: string;
|
|
53
55
|
sec?: string;
|
|
54
56
|
route?: string;
|
|
57
|
+
requiredRoles?: string[];
|
|
55
58
|
action?: () => void;
|
|
56
59
|
topItem?: boolean;
|
|
57
60
|
ref?: HTMLElement;
|
|
@@ -63,6 +66,8 @@ export interface NavigationPage {
|
|
|
63
66
|
pattern: Array<string>;
|
|
64
67
|
auth: boolean;
|
|
65
68
|
authFallback?: string;
|
|
69
|
+
/** Required roles (claims) for this page - user must have at least one (OR logic) */
|
|
70
|
+
roles?: string[];
|
|
66
71
|
menu?: Array<MenuElement>;
|
|
67
72
|
topMenu?: Array<MenuElement>;
|
|
68
73
|
withTeaser?: boolean;
|
|
@@ -71,11 +76,17 @@ export interface NavigationPage {
|
|
|
71
76
|
hideTopMenu?: boolean;
|
|
72
77
|
topMenuItems?: Array<MenuElement>;
|
|
73
78
|
menuLogoRoute?: string;
|
|
79
|
+
/** Top menu display mode: "integrated" (shared bg) or "detached" (own bg). Default: "detached" */
|
|
80
|
+
topMenuMode?: "integrated" | "detached";
|
|
81
|
+
/** Background config for pd-site-header (color, gradient, or image with overlay). */
|
|
82
|
+
bgConfig?: BgConfig;
|
|
74
83
|
}
|
|
75
84
|
export interface NavigationConfig {
|
|
76
85
|
pages: Array<NavigationPage>;
|
|
77
86
|
includeLogin: boolean;
|
|
78
87
|
defaultPostLoginRoute?: boolean;
|
|
88
|
+
/** Route to redirect to after logout. Defaults to "/" (home) */
|
|
89
|
+
logoutRedirect?: string;
|
|
79
90
|
}
|
|
80
91
|
export interface LinkObj {
|
|
81
92
|
name: string;
|
|
@@ -83,15 +94,44 @@ export interface LinkObj {
|
|
|
83
94
|
link?: string;
|
|
84
95
|
action?: () => void;
|
|
85
96
|
}
|
|
97
|
+
export interface FooterSection {
|
|
98
|
+
heading: string;
|
|
99
|
+
links: LinkObj[];
|
|
100
|
+
}
|
|
101
|
+
export interface FooterSocialLink {
|
|
102
|
+
providerId: string;
|
|
103
|
+
value: string;
|
|
104
|
+
label?: string;
|
|
105
|
+
}
|
|
86
106
|
export interface Footer {
|
|
87
|
-
|
|
107
|
+
sections?: FooterSection[];
|
|
108
|
+
socialLinks?: FooterSocialLink[];
|
|
109
|
+
legalLinks?: LinkObj[];
|
|
88
110
|
copyright?: string;
|
|
89
|
-
|
|
90
|
-
|
|
111
|
+
version?: string;
|
|
112
|
+
showVersion?: boolean;
|
|
113
|
+
madeBy?: {
|
|
114
|
+
txt: string;
|
|
115
|
+
email?: string;
|
|
116
|
+
link?: string;
|
|
117
|
+
};
|
|
118
|
+
/** Background config for pd-footer (color, gradient, or image with overlay). */
|
|
119
|
+
bgConfig?: BgConfig;
|
|
120
|
+
}
|
|
121
|
+
/** mini-rx-store reducer function type */
|
|
122
|
+
export type ReducerFunction<S = unknown> = (state: S, action: {
|
|
123
|
+
type: string;
|
|
124
|
+
payload?: unknown;
|
|
125
|
+
}) => S;
|
|
91
126
|
export interface StoreConfig {
|
|
92
127
|
appName: string;
|
|
93
|
-
|
|
94
|
-
|
|
128
|
+
/** Reducers object passed to mini-rx-store configureStore */
|
|
129
|
+
reducer: Record<string, ReducerFunction>;
|
|
130
|
+
/**
|
|
131
|
+
* Effect functions for mini-rx-store.
|
|
132
|
+
* Uses unknown[] as mini-rx-store expects Observable<any> internally.
|
|
133
|
+
*/
|
|
134
|
+
effects: unknown[];
|
|
95
135
|
}
|
|
96
136
|
export interface FileStorage {
|
|
97
137
|
name: string;
|
|
@@ -106,7 +146,7 @@ export interface MessagingConfig {
|
|
|
106
146
|
export interface AppConfiguration {
|
|
107
147
|
serviceProvider?: ServiceProviderConfiguration;
|
|
108
148
|
mock?: {
|
|
109
|
-
mockResponse?: Map<string, (functionInput:
|
|
149
|
+
mockResponse?: Map<string, (functionInput: unknown) => FunctionResult>;
|
|
110
150
|
mockWaitTime?: number;
|
|
111
151
|
};
|
|
112
152
|
navigationConfigParam: NavigationConfig;
|
|
@@ -115,6 +155,8 @@ export interface AppConfiguration {
|
|
|
115
155
|
storageConfig?: FileStorageConfig;
|
|
116
156
|
functionsConfig?: FunctionsConfig;
|
|
117
157
|
messagingConfig?: MessagingConfig;
|
|
158
|
+
/** Default loader style for pd-loading-state. Default: "spinner" */
|
|
159
|
+
defaultLoaderStyle?: "spinner" | "dots" | "pulse" | "logo";
|
|
118
160
|
}
|
|
119
161
|
export interface UploadFile {
|
|
120
162
|
fileName: string;
|
|
@@ -139,12 +181,15 @@ export interface StorageDocument {
|
|
|
139
181
|
creator?: string;
|
|
140
182
|
size?: number;
|
|
141
183
|
readonly?: boolean;
|
|
142
|
-
|
|
184
|
+
/** Firebase FullMetadata or custom metadata object */
|
|
185
|
+
metaData?: unknown;
|
|
143
186
|
}
|
|
187
|
+
/** Firestore query constraint value types */
|
|
188
|
+
export type FirestoreValueType = string | number | boolean | null | Date | FirestoreValueType[];
|
|
144
189
|
export interface CollectionContraint {
|
|
145
190
|
type: "where";
|
|
146
191
|
field: string;
|
|
147
192
|
operator: "<" | ">" | ">=" | "<=" | "==" | "!=" | "array-contains" | "array-contains-any" | "in" | "not-in";
|
|
148
|
-
value:
|
|
193
|
+
value: FirestoreValueType;
|
|
149
194
|
}
|
|
150
195
|
//# sourceMappingURL=service-provider-model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-provider-model.d.ts","sourceRoot":"","sources":["../../src/service-provider/service-provider-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"service-provider-model.d.ts","sourceRoot":"","sources":["../../src/service-provider/service-provider-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Action } from 'ts-action';
|
|
2
|
+
declare class FireOnceService {
|
|
3
|
+
private _firedKeys;
|
|
4
|
+
/**
|
|
5
|
+
* Execute an action only if it hasn't been fired before for the given key.
|
|
6
|
+
*
|
|
7
|
+
* @param key - Unique identifier for this fire-once action
|
|
8
|
+
* @param action - The action to dispatch
|
|
9
|
+
* @returns true if action was dispatched, false if already fired
|
|
10
|
+
*/
|
|
11
|
+
fireOnce(key: string, action: Action): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Check if a key has been fired.
|
|
14
|
+
*
|
|
15
|
+
* @param key - The key to check
|
|
16
|
+
* @returns true if the key has been fired
|
|
17
|
+
*/
|
|
18
|
+
hasFired(key: string): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Reset a specific key or all keys.
|
|
21
|
+
* Useful for logout scenarios or testing.
|
|
22
|
+
*
|
|
23
|
+
* @param key - Optional key to reset. If not provided, resets all keys.
|
|
24
|
+
*/
|
|
25
|
+
reset(key?: string): void;
|
|
26
|
+
/**
|
|
27
|
+
* Get all fired keys (for debugging).
|
|
28
|
+
*
|
|
29
|
+
* @returns Array of all fired keys
|
|
30
|
+
*/
|
|
31
|
+
getFiredKeys(): string[];
|
|
32
|
+
}
|
|
33
|
+
export declare const fireOnceService: FireOnceService;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=fire-once-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fire-once-service.d.ts","sourceRoot":"","sources":["../../src/services/fire-once-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAIxC,cAAM,eAAe;IACnB,OAAO,CAAC,UAAU,CAAqB;IAEvC;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAY9C;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI9B;;;;;OAKG;IACH,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAUzB;;;;OAIG;IACH,YAAY,IAAI,MAAM,EAAE;CAGzB;AAED,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { pdStore } from '../store/mini-rx.store.js';
|
|
2
|
+
import { createLogger } from '../helper/logger.js';
|
|
3
|
+
|
|
4
|
+
const logger = createLogger("FireOnceService");
|
|
5
|
+
class FireOnceService {
|
|
6
|
+
constructor() {
|
|
7
|
+
this._firedKeys = /* @__PURE__ */ new Set();
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Execute an action only if it hasn't been fired before for the given key.
|
|
11
|
+
*
|
|
12
|
+
* @param key - Unique identifier for this fire-once action
|
|
13
|
+
* @param action - The action to dispatch
|
|
14
|
+
* @returns true if action was dispatched, false if already fired
|
|
15
|
+
*/
|
|
16
|
+
fireOnce(key, action) {
|
|
17
|
+
if (this._firedKeys.has(key)) {
|
|
18
|
+
logger.debug(`Key already fired, skipping: ${key}`);
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
this._firedKeys.add(key);
|
|
22
|
+
pdStore().dispatch(action);
|
|
23
|
+
logger.debug(`Action fired for key: ${key}`);
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Check if a key has been fired.
|
|
28
|
+
*
|
|
29
|
+
* @param key - The key to check
|
|
30
|
+
* @returns true if the key has been fired
|
|
31
|
+
*/
|
|
32
|
+
hasFired(key) {
|
|
33
|
+
return this._firedKeys.has(key);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Reset a specific key or all keys.
|
|
37
|
+
* Useful for logout scenarios or testing.
|
|
38
|
+
*
|
|
39
|
+
* @param key - Optional key to reset. If not provided, resets all keys.
|
|
40
|
+
*/
|
|
41
|
+
reset(key) {
|
|
42
|
+
if (key) {
|
|
43
|
+
this._firedKeys.delete(key);
|
|
44
|
+
logger.debug(`Reset key: ${key}`);
|
|
45
|
+
} else {
|
|
46
|
+
this._firedKeys.clear();
|
|
47
|
+
logger.debug("Reset all keys");
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Get all fired keys (for debugging).
|
|
52
|
+
*
|
|
53
|
+
* @returns Array of all fired keys
|
|
54
|
+
*/
|
|
55
|
+
getFiredKeys() {
|
|
56
|
+
return Array.from(this._firedKeys);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const fireOnceService = new FireOnceService();
|
|
60
|
+
|
|
61
|
+
export { fireOnceService };
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { Action } from 'ts-action';
|
|
2
|
+
import { AsyncActionGroupBase } from './async-action-utils.js';
|
|
3
|
+
export interface LoadingEffectOptions {
|
|
4
|
+
/** Show modal overlay (default: false) */
|
|
5
|
+
modal?: boolean;
|
|
6
|
+
/** Show small background loader (default: false) */
|
|
7
|
+
smallBackground?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface ErrorToastOptions {
|
|
10
|
+
/** Custom function to get error message from error code */
|
|
11
|
+
getErrorMessage?: (code: number) => string;
|
|
12
|
+
/** Default error message when code not found */
|
|
13
|
+
defaultErrorMessage?: string;
|
|
14
|
+
/** Toast duration in ms (default: -1 = persistent, user must close manually) */
|
|
15
|
+
duration?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface SuccessToastOptions {
|
|
18
|
+
/** Default toast duration in ms (default: 4000) */
|
|
19
|
+
defaultDuration?: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Creates an effect that adds loading state when async actions start.
|
|
23
|
+
*
|
|
24
|
+
* @param groups - Array of async action groups to monitor
|
|
25
|
+
* @param options - Loading state display options
|
|
26
|
+
* @returns Effect that dispatches addLoadingState actions
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* // Modal loading for specific groups
|
|
31
|
+
* export const modalLoadingEffect = createLoadingEffect(
|
|
32
|
+
* [loadProfile, saveProfile],
|
|
33
|
+
* { modal: true }
|
|
34
|
+
* );
|
|
35
|
+
*
|
|
36
|
+
* // Background loading for other groups
|
|
37
|
+
* export const bgLoadingEffect = createLoadingEffect(
|
|
38
|
+
* [loadEvents, loadRequests],
|
|
39
|
+
* { smallBackground: true }
|
|
40
|
+
* );
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare function createLoadingEffect(groups: AsyncActionGroupBase[], options?: LoadingEffectOptions): import('rxjs').Observable<{
|
|
44
|
+
payload: import('@progressive-development/pd-content').LoadingState;
|
|
45
|
+
} & {
|
|
46
|
+
type: "SPA_APP_ADD_LOADING";
|
|
47
|
+
}> & import('mini-rx-store/lib/models.js').HasEffectMetadata;
|
|
48
|
+
/**
|
|
49
|
+
* Creates an effect that removes loading state when async actions complete.
|
|
50
|
+
*
|
|
51
|
+
* @param groups - Array of async action groups to monitor
|
|
52
|
+
* @returns Effect that dispatches removeLoadingState actions
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* export const removeLoadingEffect = createRemoveLoadingEffect([
|
|
57
|
+
* loadProfile, saveProfile, loadEvents, loadRequests
|
|
58
|
+
* ]);
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare function createRemoveLoadingEffect(groups: AsyncActionGroupBase[]): import('rxjs').Observable<{
|
|
62
|
+
payload: string;
|
|
63
|
+
} & {
|
|
64
|
+
type: "SPA_APP_REMOVE_LOADING";
|
|
65
|
+
}> & import('mini-rx-store/lib/models.js').HasEffectMetadata;
|
|
66
|
+
/**
|
|
67
|
+
* Creates an effect that shows success toast when async actions succeed.
|
|
68
|
+
* Only shows toast if successTxt is defined and non-empty.
|
|
69
|
+
*
|
|
70
|
+
* @param groups - Array of async action groups to monitor
|
|
71
|
+
* @param options - Toast display options
|
|
72
|
+
* @returns Non-dispatching effect (uses toastBus directly)
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```typescript
|
|
76
|
+
* export const successToastEffect = createSuccessToastEffect([
|
|
77
|
+
* saveProfile, // Has successTxt: "Profile saved!"
|
|
78
|
+
* loadProfile, // Has successTxt: "" (no toast)
|
|
79
|
+
* ]);
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export declare function createSuccessToastEffect(groups: AsyncActionGroupBase[], options?: SuccessToastOptions): import('rxjs').Observable<Action<string>> & import('mini-rx-store/lib/models.js').HasEffectMetadata;
|
|
83
|
+
/**
|
|
84
|
+
* Creates an effect that shows error toast when async actions fail.
|
|
85
|
+
* Handles BusinessError to show appropriate error messages.
|
|
86
|
+
*
|
|
87
|
+
* @param groups - Array of async action groups to monitor
|
|
88
|
+
* @param options - Error handling options
|
|
89
|
+
* @returns Non-dispatching effect (uses toastBus directly)
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```typescript
|
|
93
|
+
* export const errorToastEffect = createErrorToastEffect(
|
|
94
|
+
* [loadProfile, saveProfile],
|
|
95
|
+
* {
|
|
96
|
+
* getErrorMessage: (code) => {
|
|
97
|
+
* const messages: Record<number, string> = {
|
|
98
|
+
* [-150]: "Access denied",
|
|
99
|
+
* [-180]: "Technical error",
|
|
100
|
+
* };
|
|
101
|
+
* return messages[code] || "An error occurred";
|
|
102
|
+
* },
|
|
103
|
+
* }
|
|
104
|
+
* );
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
export declare function createErrorToastEffect(groups: AsyncActionGroupBase[], options?: ErrorToastOptions): import('rxjs').Observable<Action<string> & {
|
|
108
|
+
payload?: unknown;
|
|
109
|
+
}> & import('mini-rx-store/lib/models.js').HasEffectMetadata;
|
|
110
|
+
/**
|
|
111
|
+
* Options for creating all loading-related effects at once.
|
|
112
|
+
*/
|
|
113
|
+
export interface CreateLoadingEffectsOptions {
|
|
114
|
+
/** Groups that show modal loading */
|
|
115
|
+
modalGroups?: AsyncActionGroupBase[];
|
|
116
|
+
/** Groups that show background loading */
|
|
117
|
+
backgroundGroups?: AsyncActionGroupBase[];
|
|
118
|
+
/** Groups that show success toasts */
|
|
119
|
+
successToastGroups?: AsyncActionGroupBase[];
|
|
120
|
+
/** All groups for error handling */
|
|
121
|
+
errorGroups?: AsyncActionGroupBase[];
|
|
122
|
+
/** Error message resolver */
|
|
123
|
+
getErrorMessage?: (code: number) => string;
|
|
124
|
+
/** Default error message */
|
|
125
|
+
defaultErrorMessage?: string;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Creates all standard loading-related effects at once.
|
|
129
|
+
* Returns an object with all effects that can be spread into the effects array.
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* ```typescript
|
|
133
|
+
* const {
|
|
134
|
+
* modalLoadingEffect,
|
|
135
|
+
* bgLoadingEffect,
|
|
136
|
+
* removeLoadingEffect,
|
|
137
|
+
* successToastEffect,
|
|
138
|
+
* errorToastEffect
|
|
139
|
+
* } = createAllLoadingEffects({
|
|
140
|
+
* modalGroups: [loadProfile, saveProfile],
|
|
141
|
+
* backgroundGroups: [loadEvents],
|
|
142
|
+
* successToastGroups: [saveProfile],
|
|
143
|
+
* errorGroups: [loadProfile, saveProfile, loadEvents],
|
|
144
|
+
* getErrorMessage: myErrorMessageFn,
|
|
145
|
+
* });
|
|
146
|
+
*
|
|
147
|
+
* // In store config:
|
|
148
|
+
* effects: [
|
|
149
|
+
* modalLoadingEffect,
|
|
150
|
+
* bgLoadingEffect,
|
|
151
|
+
* removeLoadingEffect,
|
|
152
|
+
* successToastEffect,
|
|
153
|
+
* errorToastEffect,
|
|
154
|
+
* // ... other effects
|
|
155
|
+
* ]
|
|
156
|
+
* ```
|
|
157
|
+
*/
|
|
158
|
+
export declare function createAllLoadingEffects(options: CreateLoadingEffectsOptions): {
|
|
159
|
+
modalLoadingEffect: (import('rxjs').Observable<{
|
|
160
|
+
payload: import('@progressive-development/pd-content').LoadingState;
|
|
161
|
+
} & {
|
|
162
|
+
type: "SPA_APP_ADD_LOADING";
|
|
163
|
+
}> & import('mini-rx-store/lib/models.js').HasEffectMetadata) | null;
|
|
164
|
+
bgLoadingEffect: (import('rxjs').Observable<{
|
|
165
|
+
payload: import('@progressive-development/pd-content').LoadingState;
|
|
166
|
+
} & {
|
|
167
|
+
type: "SPA_APP_ADD_LOADING";
|
|
168
|
+
}> & import('mini-rx-store/lib/models.js').HasEffectMetadata) | null;
|
|
169
|
+
removeLoadingEffect: (import('rxjs').Observable<{
|
|
170
|
+
payload: string;
|
|
171
|
+
} & {
|
|
172
|
+
type: "SPA_APP_REMOVE_LOADING";
|
|
173
|
+
}> & import('mini-rx-store/lib/models.js').HasEffectMetadata) | null;
|
|
174
|
+
successToastEffect: (import('rxjs').Observable<Action<string>> & import('mini-rx-store/lib/models.js').HasEffectMetadata) | null;
|
|
175
|
+
errorToastEffect: (import('rxjs').Observable<Action<string> & {
|
|
176
|
+
payload?: unknown;
|
|
177
|
+
}> & import('mini-rx-store/lib/models.js').HasEffectMetadata) | null;
|
|
178
|
+
};
|
|
179
|
+
//# sourceMappingURL=async-action-effects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async-action-effects.d.ts","sourceRoot":"","sources":["../../src/store/async-action-effects.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAKxC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAOpE,MAAM,WAAW,oBAAoB;IACnC,0CAA0C;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oDAAoD;IACpD,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,2DAA2D;IAC3D,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,gDAAgD;IAChD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,mDAAmD;IACnD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,oBAAoB,EAAE,EAC9B,OAAO,GAAE,oBAAyB;;;;6DAqBnC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,oBAAoB,EAAE;;;;6DAevE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,oBAAoB,EAAE,EAC9B,OAAO,GAAE,mBAAwB,uGAoBlC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,oBAAoB,EAAE,EAC9B,OAAO,GAAE,iBAAsB;cASO,OAAO;6DAmB9C;AAMD;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,qCAAqC;IACrC,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACrC,0CAA0C;IAC1C,gBAAgB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC1C,sCAAsC;IACtC,kBAAkB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC5C,oCAAoC;IACpC,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACrC,6BAA6B;IAC7B,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,4BAA4B;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,2BAA2B;;;;;;;;;;;;;;;;;;kBA1EpC,OAAO;;EAoG9C"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { createEffect, actions$ } from 'mini-rx-store';
|
|
2
|
+
import { filter, tap, map } from 'rxjs/operators';
|
|
3
|
+
import { toastBus } from '@progressive-development/pd-page';
|
|
4
|
+
import { addLoadingState, removeLoadingState } from './spa-app-actions.js';
|
|
5
|
+
import { isBusinessError } from '../service-provider/function-utils.js';
|
|
6
|
+
import { getConfigForAction } from './async-action-utils.js';
|
|
7
|
+
|
|
8
|
+
function createLoadingEffect(groups, options = {}) {
|
|
9
|
+
const startTypes = groups.map((g) => g.types.action);
|
|
10
|
+
return createEffect(
|
|
11
|
+
actions$.pipe(
|
|
12
|
+
filter((action) => startTypes.includes(action.type)),
|
|
13
|
+
map((action) => {
|
|
14
|
+
const config = getConfigForAction(action, groups);
|
|
15
|
+
return addLoadingState({
|
|
16
|
+
actionKey: config?.actionKey || "unknown",
|
|
17
|
+
loadingTxt: config?.loadingTxt || "Loading...",
|
|
18
|
+
isLoading: true,
|
|
19
|
+
modal: options.modal ?? config?.modal ?? false,
|
|
20
|
+
smallBackground: options.smallBackground ?? config?.smallBackground ?? false,
|
|
21
|
+
loaderStyle: config?.loaderStyle
|
|
22
|
+
});
|
|
23
|
+
})
|
|
24
|
+
)
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
function createRemoveLoadingEffect(groups) {
|
|
28
|
+
const completionTypes = groups.flatMap((g) => [
|
|
29
|
+
g.types.success,
|
|
30
|
+
g.types.fail
|
|
31
|
+
]);
|
|
32
|
+
return createEffect(
|
|
33
|
+
actions$.pipe(
|
|
34
|
+
filter((action) => completionTypes.includes(action.type)),
|
|
35
|
+
map((action) => {
|
|
36
|
+
const config = getConfigForAction(action, groups);
|
|
37
|
+
return removeLoadingState(config?.actionKey || "unknown");
|
|
38
|
+
})
|
|
39
|
+
)
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
function createSuccessToastEffect(groups, options = {}) {
|
|
43
|
+
const successTypes = groups.filter((g) => g.config.successTxt).map((g) => g.types.success);
|
|
44
|
+
return createEffect(
|
|
45
|
+
actions$.pipe(
|
|
46
|
+
filter((action) => successTypes.includes(action.type)),
|
|
47
|
+
tap((action) => {
|
|
48
|
+
const config = getConfigForAction(action, groups);
|
|
49
|
+
if (config?.successTxt) {
|
|
50
|
+
const duration = config.successDuration || options.defaultDuration || 4e3;
|
|
51
|
+
toastBus.success(config.successTxt, duration);
|
|
52
|
+
}
|
|
53
|
+
})
|
|
54
|
+
),
|
|
55
|
+
{ dispatch: false }
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
function createErrorToastEffect(groups, options = {}) {
|
|
59
|
+
const failTypes = groups.map((g) => g.types.fail);
|
|
60
|
+
const defaultMessage = options.defaultErrorMessage || "An error occurred";
|
|
61
|
+
const duration = options.duration ?? -1;
|
|
62
|
+
return createEffect(
|
|
63
|
+
actions$.pipe(
|
|
64
|
+
filter((action) => failTypes.includes(action.type)),
|
|
65
|
+
tap((action) => {
|
|
66
|
+
const error = action.payload;
|
|
67
|
+
let message;
|
|
68
|
+
if (isBusinessError(error)) {
|
|
69
|
+
message = options.getErrorMessage ? options.getErrorMessage(error.code) : error.message || defaultMessage;
|
|
70
|
+
} else if (error instanceof Error) {
|
|
71
|
+
message = error.message || defaultMessage;
|
|
72
|
+
} else {
|
|
73
|
+
message = defaultMessage;
|
|
74
|
+
}
|
|
75
|
+
toastBus.error(message, duration);
|
|
76
|
+
})
|
|
77
|
+
),
|
|
78
|
+
{ dispatch: false }
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
function createAllLoadingEffects(options) {
|
|
82
|
+
const allGroups = [
|
|
83
|
+
...options.modalGroups || [],
|
|
84
|
+
...options.backgroundGroups || []
|
|
85
|
+
];
|
|
86
|
+
return {
|
|
87
|
+
modalLoadingEffect: options.modalGroups?.length ? createLoadingEffect(options.modalGroups, { modal: true }) : null,
|
|
88
|
+
bgLoadingEffect: options.backgroundGroups?.length ? createLoadingEffect(options.backgroundGroups, { smallBackground: true }) : null,
|
|
89
|
+
removeLoadingEffect: allGroups.length ? createRemoveLoadingEffect(allGroups) : null,
|
|
90
|
+
successToastEffect: options.successToastGroups?.length ? createSuccessToastEffect(options.successToastGroups) : null,
|
|
91
|
+
errorToastEffect: options.errorGroups?.length ? createErrorToastEffect(options.errorGroups, {
|
|
92
|
+
getErrorMessage: options.getErrorMessage,
|
|
93
|
+
defaultErrorMessage: options.defaultErrorMessage
|
|
94
|
+
}) : null
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export { createAllLoadingEffects, createErrorToastEffect, createLoadingEffect, createRemoveLoadingEffect, createSuccessToastEffect };
|