ngssm-remote-data 15.2.6 → 15.2.7
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/esm2020/lib/actions/load-remote-data.action.mjs +3 -2
- package/esm2020/lib/actions/register-loaded-remote-data.action.mjs +3 -2
- package/esm2020/lib/effects/remote-data-loading.effect.mjs +18 -9
- package/esm2020/lib/model/index.mjs +3 -1
- package/esm2020/lib/model/remote-data-getter-params.mjs +2 -0
- package/esm2020/lib/model/remote-data-provider.mjs +3 -0
- package/esm2020/lib/model/remote-data.mjs +1 -1
- package/esm2020/lib/reducers/remote-data.reducer.mjs +5 -4
- package/esm2020/lib/remote-data-state-initializer.mjs +2 -3
- package/esm2020/public-api.mjs +1 -2
- package/fesm2015/ngssm-remote-data.mjs +29 -13
- package/fesm2015/ngssm-remote-data.mjs.map +1 -1
- package/fesm2020/ngssm-remote-data.mjs +27 -13
- package/fesm2020/ngssm-remote-data.mjs.map +1 -1
- package/lib/actions/load-remote-data.action.d.ts +4 -2
- package/lib/actions/register-loaded-remote-data.action.d.ts +3 -2
- package/lib/effects/remote-data-loading.effect.d.ts +5 -3
- package/lib/model/index.d.ts +2 -0
- package/lib/model/remote-data-getter-params.d.ts +6 -0
- package/lib/model/remote-data-provider.d.ts +9 -0
- package/lib/model/remote-data.d.ts +2 -0
- package/lib/reducers/remote-data.reducer.d.ts +1 -1
- package/lib/remote-data-state-initializer.d.ts +1 -1
- package/package.json +2 -2
- package/public-api.d.ts +0 -1
- package/esm2020/lib/remote-data-provider.mjs +0 -3
- package/lib/remote-data-provider.d.ts +0 -8
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { RemoteDataActionType } from './remote-data-action-type';
|
|
2
2
|
export class LoadRemoteDataAction {
|
|
3
|
-
constructor(remoteDataKey, forceReload) {
|
|
3
|
+
constructor(remoteDataKey, forceReload, params) {
|
|
4
4
|
this.remoteDataKey = remoteDataKey;
|
|
5
5
|
this.forceReload = forceReload;
|
|
6
|
+
this.params = params;
|
|
6
7
|
this.type = RemoteDataActionType.loadRemoteData;
|
|
7
8
|
}
|
|
8
9
|
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1yZW1vdGUtZGF0YS5hY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1yZW1vdGUtZGF0YS9zcmMvbGliL2FjdGlvbnMvbG9hZC1yZW1vdGUtZGF0YS5hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFakUsTUFBTSxPQUFPLG9CQUFvQjtJQUcvQixZQUNrQixhQUFxQixFQUNyQixXQUFvQixFQUNwQixNQUF1QztRQUZ2QyxrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUNyQixnQkFBVyxHQUFYLFdBQVcsQ0FBUztRQUNwQixXQUFNLEdBQU4sTUFBTSxDQUFpQztRQUx6QyxTQUFJLEdBQVcsb0JBQW9CLENBQUMsY0FBYyxDQUFDO0lBTWhFLENBQUM7Q0FDTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbiB9IGZyb20gJ25nc3NtLXN0b3JlJztcblxuaW1wb3J0IHsgUmVtb3RlRGF0YUdldHRlclBhcmFtcyB9IGZyb20gJy4uL21vZGVsJztcbmltcG9ydCB7IFJlbW90ZURhdGFBY3Rpb25UeXBlIH0gZnJvbSAnLi9yZW1vdGUtZGF0YS1hY3Rpb24tdHlwZSc7XG5cbmV4cG9ydCBjbGFzcyBMb2FkUmVtb3RlRGF0YUFjdGlvbjxUVmFsdWUgPSBhbnk+IGltcGxlbWVudHMgQWN0aW9uIHtcbiAgcHVibGljIHJlYWRvbmx5IHR5cGU6IHN0cmluZyA9IFJlbW90ZURhdGFBY3Rpb25UeXBlLmxvYWRSZW1vdGVEYXRhO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSByZW1vdGVEYXRhS2V5OiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IGZvcmNlUmVsb2FkOiBib29sZWFuLFxuICAgIHB1YmxpYyByZWFkb25seSBwYXJhbXM/OiBSZW1vdGVEYXRhR2V0dGVyUGFyYW1zPFRWYWx1ZT5cbiAgKSB7fVxufVxuIl19
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { RemoteDataActionType } from './remote-data-action-type';
|
|
2
2
|
export class RegisterLoadedRemoteDataAction {
|
|
3
|
-
constructor(remoteDataKey, status, data, message) {
|
|
3
|
+
constructor(remoteDataKey, status, data, message, remoteCallError) {
|
|
4
4
|
this.remoteDataKey = remoteDataKey;
|
|
5
5
|
this.status = status;
|
|
6
6
|
this.data = data;
|
|
7
7
|
this.message = message;
|
|
8
|
+
this.remoteCallError = remoteCallError;
|
|
8
9
|
this.type = RemoteDataActionType.registerLoadedRemoteData;
|
|
9
10
|
}
|
|
10
11
|
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItbG9hZGVkLXJlbW90ZS1kYXRhLmFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXJlbW90ZS1kYXRhL3NyYy9saWIvYWN0aW9ucy9yZWdpc3Rlci1sb2FkZWQtcmVtb3RlLWRhdGEuYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRWpFLE1BQU0sT0FBTyw4QkFBOEI7SUFHekMsWUFDa0IsYUFBcUIsRUFDckIsTUFBa0IsRUFDbEIsSUFBUyxFQUNULE9BQWdCLEVBQ2hCLGVBQWlDO1FBSmpDLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVk7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBSztRQUNULFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsb0JBQWUsR0FBZixlQUFlLENBQWtCO1FBUG5DLFNBQUksR0FBVyxvQkFBb0IsQ0FBQyx3QkFBd0IsQ0FBQztJQVExRSxDQUFDO0NBQ0wiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb24gfSBmcm9tICduZ3NzbS1zdG9yZSc7XG5cbmltcG9ydCB7IERhdGFTdGF0dXMsIFJlbW90ZUNhbGxFcnJvciB9IGZyb20gJy4uL21vZGVsJztcbmltcG9ydCB7IFJlbW90ZURhdGFBY3Rpb25UeXBlIH0gZnJvbSAnLi9yZW1vdGUtZGF0YS1hY3Rpb24tdHlwZSc7XG5cbmV4cG9ydCBjbGFzcyBSZWdpc3RlckxvYWRlZFJlbW90ZURhdGFBY3Rpb24gaW1wbGVtZW50cyBBY3Rpb24ge1xuICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogc3RyaW5nID0gUmVtb3RlRGF0YUFjdGlvblR5cGUucmVnaXN0ZXJMb2FkZWRSZW1vdGVEYXRhO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSByZW1vdGVEYXRhS2V5OiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IHN0YXR1czogRGF0YVN0YXR1cyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGF0YTogYW55LFxuICAgIHB1YmxpYyByZWFkb25seSBtZXNzYWdlPzogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSByZW1vdGVDYWxsRXJyb3I/OiBSZW1vdGVDYWxsRXJyb3JcbiAgKSB7fVxufVxuIl19
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { Inject, Injectable, Optional } from '@angular/core';
|
|
2
2
|
import { NGSSM_EFFECT } from 'ngssm-store';
|
|
3
3
|
import { RegisterLoadedRemoteDataAction, RemoteDataActionType } from '../actions';
|
|
4
|
-
import { DataStatus } from '../model';
|
|
5
|
-
import { NGSSM_REMOTE_DATA_PROVIDER } from '../remote-data-provider';
|
|
4
|
+
import { DataStatus, NGSSM_REMOTE_DATA_PROVIDER } from '../model';
|
|
6
5
|
import { selectRemoteDataState } from '../state';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "ngssm-toolkit";
|
|
8
8
|
export class RemoteDataLoadingEffect {
|
|
9
|
-
constructor(remoteDataProviders) {
|
|
9
|
+
constructor(remoteDataProviders, notifierService) {
|
|
10
|
+
this.notifierService = notifierService;
|
|
10
11
|
this.processedActions = [RemoteDataActionType.loadRemoteData];
|
|
11
12
|
this.remoteDataProvidersPerKey = new Map((remoteDataProviders ?? []).map((r) => [r.remoteDataKey, r]));
|
|
12
13
|
}
|
|
@@ -17,16 +18,24 @@ export class RemoteDataLoadingEffect {
|
|
|
17
18
|
if (!item || !provider || item.status !== DataStatus.loading) {
|
|
18
19
|
return;
|
|
19
20
|
}
|
|
20
|
-
provider.get().subscribe({
|
|
21
|
-
next: (value) =>
|
|
21
|
+
provider.get(loadRemoteDataAction.params).subscribe({
|
|
22
|
+
next: (value) => {
|
|
23
|
+
store.dispatchAction(new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.loaded, value));
|
|
24
|
+
if (loadRemoteDataAction.params?.callbackAction) {
|
|
25
|
+
store.dispatchActionType(loadRemoteDataAction.params.callbackAction);
|
|
26
|
+
}
|
|
27
|
+
},
|
|
22
28
|
error: (error) => {
|
|
23
29
|
console.error(`Unable to load data for '${loadRemoteDataAction.remoteDataKey}'`, error);
|
|
24
|
-
|
|
30
|
+
if (loadRemoteDataAction.params?.errorNotificationMessage) {
|
|
31
|
+
this.notifierService.notifyError(loadRemoteDataAction.params.errorNotificationMessage(error?.error));
|
|
32
|
+
}
|
|
33
|
+
store.dispatchAction(new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.error, undefined, error?.error));
|
|
25
34
|
}
|
|
26
35
|
});
|
|
27
36
|
}
|
|
28
37
|
}
|
|
29
|
-
RemoteDataLoadingEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RemoteDataLoadingEffect, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
38
|
+
RemoteDataLoadingEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RemoteDataLoadingEffect, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }, { token: i1.NgssmNotifierService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
30
39
|
RemoteDataLoadingEffect.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RemoteDataLoadingEffect });
|
|
31
40
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RemoteDataLoadingEffect, decorators: [{
|
|
32
41
|
type: Injectable
|
|
@@ -35,10 +44,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
|
|
|
35
44
|
args: [NGSSM_REMOTE_DATA_PROVIDER]
|
|
36
45
|
}, {
|
|
37
46
|
type: Optional
|
|
38
|
-
}] }]; } });
|
|
47
|
+
}] }, { type: i1.NgssmNotifierService }]; } });
|
|
39
48
|
export const remoteDataLoadingEffectProvider = {
|
|
40
49
|
provide: NGSSM_EFFECT,
|
|
41
50
|
useClass: RemoteDataLoadingEffect,
|
|
42
51
|
multi: true
|
|
43
52
|
};
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWRhdGEtbG9hZGluZy5lZmZlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1yZW1vdGUtZGF0YS9zcmMvbGliL2VmZmVjdHMvcmVtb3RlLWRhdGEtbG9hZGluZy5lZmZlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBRXZFLE9BQU8sRUFBZ0MsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3pFLE9BQU8sRUFBd0IsOEJBQThCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDeEcsT0FBTyxFQUFFLFVBQVUsRUFBc0IsMEJBQTBCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDOzs7QUFHakQsTUFBTSxPQUFPLHVCQUF1QjtJQUtsQyxZQUNrRCxtQkFBeUMsRUFDakYsZUFBcUM7UUFBckMsb0JBQWUsR0FBZixlQUFlLENBQXNCO1FBSi9CLHFCQUFnQixHQUFhLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLENBQUM7UUFNakYsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksR0FBRyxDQUE2QixDQUFDLG1CQUFtQixJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNySSxDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQVksRUFBRSxLQUFZLEVBQUUsTUFBYztRQUM3RCxNQUFNLG9CQUFvQixHQUFHLE1BQThCLENBQUM7UUFDNUQsTUFBTSxJQUFJLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDOUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV4RixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLE9BQU8sRUFBRTtZQUM1RCxPQUFPO1NBQ1I7UUFFRCxRQUFRLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNsRCxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDZCxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksOEJBQThCLENBQUMsb0JBQW9CLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDdkgsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFO29CQUMvQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2lCQUN0RTtZQUNILENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDZixPQUFPLENBQUMsS0FBSyxDQUFDLDRCQUE0QixvQkFBb0IsQ0FBQyxhQUFhLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDeEYsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsd0JBQXdCLEVBQUU7b0JBQ3pELElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDdEc7Z0JBRUQsS0FBSyxDQUFDLGNBQWMsQ0FDbEIsSUFBSSw4QkFBOEIsQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUNsSCxDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O29IQXZDVSx1QkFBdUIsa0JBTXhCLDBCQUEwQjt3SEFOekIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVU7OzBCQU9OLE1BQU07MkJBQUMsMEJBQTBCOzswQkFBRyxRQUFROztBQW9DakQsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQWE7SUFDdkQsT0FBTyxFQUFFLFlBQVk7SUFDckIsUUFBUSxFQUFFLHVCQUF1QjtJQUNqQyxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBFZmZlY3QsIFN0b3JlLCBTdGF0ZSwgQWN0aW9uLCBOR1NTTV9FRkZFQ1QgfSBmcm9tICduZ3NzbS1zdG9yZSc7XG5pbXBvcnQgeyBOZ3NzbU5vdGlmaWVyU2VydmljZSB9IGZyb20gJ25nc3NtLXRvb2xraXQnO1xuXG5pbXBvcnQgeyBMb2FkUmVtb3RlRGF0YUFjdGlvbiwgUmVnaXN0ZXJMb2FkZWRSZW1vdGVEYXRhQWN0aW9uLCBSZW1vdGVEYXRhQWN0aW9uVHlwZSB9IGZyb20gJy4uL2FjdGlvbnMnO1xuaW1wb3J0IHsgRGF0YVN0YXR1cywgUmVtb3RlRGF0YVByb3ZpZGVyLCBOR1NTTV9SRU1PVEVfREFUQV9QUk9WSURFUiB9IGZyb20gJy4uL21vZGVsJztcbmltcG9ydCB7IHNlbGVjdFJlbW90ZURhdGFTdGF0ZSB9IGZyb20gJy4uL3N0YXRlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlbW90ZURhdGFMb2FkaW5nRWZmZWN0IGltcGxlbWVudHMgRWZmZWN0IHtcbiAgcHJpdmF0ZSByZWFkb25seSByZW1vdGVEYXRhUHJvdmlkZXJzUGVyS2V5OiBNYXA8c3RyaW5nLCBSZW1vdGVEYXRhUHJvdmlkZXI+O1xuXG4gIHB1YmxpYyByZWFkb25seSBwcm9jZXNzZWRBY3Rpb25zOiBzdHJpbmdbXSA9IFtSZW1vdGVEYXRhQWN0aW9uVHlwZS5sb2FkUmVtb3RlRGF0YV07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChOR1NTTV9SRU1PVEVfREFUQV9QUk9WSURFUikgQE9wdGlvbmFsKCkgcmVtb3RlRGF0YVByb3ZpZGVyczogUmVtb3RlRGF0YVByb3ZpZGVyW10sXG4gICAgcHJpdmF0ZSBub3RpZmllclNlcnZpY2U6IE5nc3NtTm90aWZpZXJTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMucmVtb3RlRGF0YVByb3ZpZGVyc1BlcktleSA9IG5ldyBNYXA8c3RyaW5nLCBSZW1vdGVEYXRhUHJvdmlkZXI+KChyZW1vdGVEYXRhUHJvdmlkZXJzID8/IFtdKS5tYXAoKHIpID0+IFtyLnJlbW90ZURhdGFLZXksIHJdKSk7XG4gIH1cblxuICBwdWJsaWMgcHJvY2Vzc0FjdGlvbihzdG9yZTogU3RvcmUsIHN0YXRlOiBTdGF0ZSwgYWN0aW9uOiBBY3Rpb24pOiB2b2lkIHtcbiAgICBjb25zdCBsb2FkUmVtb3RlRGF0YUFjdGlvbiA9IGFjdGlvbiBhcyBMb2FkUmVtb3RlRGF0YUFjdGlvbjtcbiAgICBjb25zdCBpdGVtID0gc2VsZWN0UmVtb3RlRGF0YVN0YXRlKHN0YXRlKVtsb2FkUmVtb3RlRGF0YUFjdGlvbi5yZW1vdGVEYXRhS2V5XTtcbiAgICBjb25zdCBwcm92aWRlciA9IHRoaXMucmVtb3RlRGF0YVByb3ZpZGVyc1BlcktleS5nZXQobG9hZFJlbW90ZURhdGFBY3Rpb24ucmVtb3RlRGF0YUtleSk7XG5cbiAgICBpZiAoIWl0ZW0gfHwgIXByb3ZpZGVyIHx8IGl0ZW0uc3RhdHVzICE9PSBEYXRhU3RhdHVzLmxvYWRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwcm92aWRlci5nZXQobG9hZFJlbW90ZURhdGFBY3Rpb24ucGFyYW1zKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHZhbHVlKSA9PiB7XG4gICAgICAgIHN0b3JlLmRpc3BhdGNoQWN0aW9uKG5ldyBSZWdpc3RlckxvYWRlZFJlbW90ZURhdGFBY3Rpb24obG9hZFJlbW90ZURhdGFBY3Rpb24ucmVtb3RlRGF0YUtleSwgRGF0YVN0YXR1cy5sb2FkZWQsIHZhbHVlKSk7XG4gICAgICAgIGlmIChsb2FkUmVtb3RlRGF0YUFjdGlvbi5wYXJhbXM/LmNhbGxiYWNrQWN0aW9uKSB7XG4gICAgICAgICAgc3RvcmUuZGlzcGF0Y2hBY3Rpb25UeXBlKGxvYWRSZW1vdGVEYXRhQWN0aW9uLnBhcmFtcy5jYWxsYmFja0FjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIGRhdGEgZm9yICcke2xvYWRSZW1vdGVEYXRhQWN0aW9uLnJlbW90ZURhdGFLZXl9J2AsIGVycm9yKTtcbiAgICAgICAgaWYgKGxvYWRSZW1vdGVEYXRhQWN0aW9uLnBhcmFtcz8uZXJyb3JOb3RpZmljYXRpb25NZXNzYWdlKSB7XG4gICAgICAgICAgdGhpcy5ub3RpZmllclNlcnZpY2Uubm90aWZ5RXJyb3IobG9hZFJlbW90ZURhdGFBY3Rpb24ucGFyYW1zLmVycm9yTm90aWZpY2F0aW9uTWVzc2FnZShlcnJvcj8uZXJyb3IpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0b3JlLmRpc3BhdGNoQWN0aW9uKFxuICAgICAgICAgIG5ldyBSZWdpc3RlckxvYWRlZFJlbW90ZURhdGFBY3Rpb24obG9hZFJlbW90ZURhdGFBY3Rpb24ucmVtb3RlRGF0YUtleSwgRGF0YVN0YXR1cy5lcnJvciwgdW5kZWZpbmVkLCBlcnJvcj8uZXJyb3IpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHJlbW90ZURhdGFMb2FkaW5nRWZmZWN0UHJvdmlkZXI6IFByb3ZpZGVyID0ge1xuICBwcm92aWRlOiBOR1NTTV9FRkZFQ1QsXG4gIHVzZUNsYXNzOiBSZW1vdGVEYXRhTG9hZGluZ0VmZmVjdCxcbiAgbXVsdGk6IHRydWVcbn07XG4iXX0=
|
|
@@ -2,4 +2,6 @@ export * from './data-status';
|
|
|
2
2
|
export * from './remote-data';
|
|
3
3
|
export * from './remote-call-status';
|
|
4
4
|
export * from './remote-call-error';
|
|
5
|
-
|
|
5
|
+
export * from './remote-data-provider';
|
|
6
|
+
export * from './remote-data-getter-params';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1yZW1vdGUtZGF0YS9zcmMvbGliL21vZGVsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RhdGEtc3RhdHVzJztcbmV4cG9ydCAqIGZyb20gJy4vcmVtb3RlLWRhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9yZW1vdGUtY2FsbC1zdGF0dXMnO1xuZXhwb3J0ICogZnJvbSAnLi9yZW1vdGUtY2FsbC1lcnJvcic7XG5leHBvcnQgKiBmcm9tICcuL3JlbW90ZS1kYXRhLXByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vcmVtb3RlLWRhdGEtZ2V0dGVyLXBhcmFtcyc7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWRhdGEtZ2V0dGVyLXBhcmFtcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXJlbW90ZS1kYXRhL3NyYy9saWIvbW9kZWwvcmVtb3RlLWRhdGEtZ2V0dGVyLXBhcmFtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVtb3RlQ2FsbEVycm9yIH0gZnJvbSAnLi9yZW1vdGUtY2FsbC1lcnJvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3RlRGF0YUdldHRlclBhcmFtczxURGF0YSA9IGFueT4ge1xuICBzZXJ2aWNlUGFyYW1zOiBURGF0YTtcbiAgY2FsbGJhY2tBY3Rpb24/OiBzdHJpbmc7XG4gIGVycm9yTm90aWZpY2F0aW9uTWVzc2FnZT86IChyZW1vdGVDYWxsRXJyb3I/OiBSZW1vdGVDYWxsRXJyb3IpID0+IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export const NGSSM_REMOTE_DATA_PROVIDER = new InjectionToken('NGSSM_REMOTE_DATA_PROVIDER');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWRhdGEtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1yZW1vdGUtZGF0YS9zcmMvbGliL21vZGVsL3JlbW90ZS1kYXRhLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFXL0MsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxjQUFjLENBQXFCLDRCQUE0QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUmVtb3RlRGF0YUdldHRlclBhcmFtcyB9IGZyb20gJy4vcmVtb3RlLWRhdGEtZ2V0dGVyLXBhcmFtcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3RlRGF0YVByb3ZpZGVyPFREYXRhID0gYW55LCBUVmFsdWUgPSBhbnk+IHtcbiAgcmVhZG9ubHkgcmVtb3RlRGF0YUtleTogc3RyaW5nO1xuICByZWFkb25seSBjYWNoZUR1cmF0aW9uSW5TZWNvbmRzPzogbnVtYmVyO1xuXG4gIGdldChwYXJhbXM/OiBSZW1vdGVEYXRhR2V0dGVyUGFyYW1zPFRWYWx1ZT4pOiBPYnNlcnZhYmxlPFREYXRhPjtcbn1cblxuZXhwb3J0IGNvbnN0IE5HU1NNX1JFTU9URV9EQVRBX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPFJlbW90ZURhdGFQcm92aWRlcj4oJ05HU1NNX1JFTU9URV9EQVRBX1BST1ZJREVSJyk7XG4iXX0=
|
|
@@ -3,4 +3,4 @@ export const getDefaultRemoteData = (defaultValue) => ({
|
|
|
3
3
|
status: DataStatus.none,
|
|
4
4
|
data: defaultValue
|
|
5
5
|
});
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1yZW1vdGUtZGF0YS9zcmMvbGliL21vZGVsL3JlbW90ZS1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFXM0MsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBSSxZQUFnQixFQUFpQixFQUFFLENBQUMsQ0FBQztJQUMzRSxNQUFNLEVBQUUsVUFBVSxDQUFDLElBQUk7SUFDdkIsSUFBSSxFQUFFLFlBQVk7Q0FDbkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVN0YXR1cyB9IGZyb20gJy4vZGF0YS1zdGF0dXMnO1xuaW1wb3J0IHsgUmVtb3RlQ2FsbEVycm9yIH0gZnJvbSAnLi9yZW1vdGUtY2FsbC1lcnJvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3RlRGF0YTxUPiB7XG4gIHN0YXR1czogRGF0YVN0YXR1cztcbiAgZGF0YT86IFQ7XG4gIHRpbWVzdGFtcD86IERhdGU7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG4gIGVycm9yPzogUmVtb3RlQ2FsbEVycm9yO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdFJlbW90ZURhdGEgPSA8VD4oZGVmYXVsdFZhbHVlPzogVCk6IFJlbW90ZURhdGE8VD4gPT4gKHtcbiAgc3RhdHVzOiBEYXRhU3RhdHVzLm5vbmUsXG4gIGRhdGE6IGRlZmF1bHRWYWx1ZVxufSk7XG4iXX0=
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { Inject, Injectable, Optional } from '@angular/core';
|
|
2
2
|
import { NGSSM_REDUCER } from 'ngssm-store';
|
|
3
3
|
import { RemoteDataActionType } from '../actions';
|
|
4
|
-
import { DataStatus } from '../model';
|
|
5
|
-
import { NGSSM_REMOTE_DATA_PROVIDER } from '../remote-data-provider';
|
|
4
|
+
import { DataStatus, NGSSM_REMOTE_DATA_PROVIDER } from '../model';
|
|
6
5
|
import { selectRemoteDataState, updateRemoteDataState } from '../state';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
7
|
export class RemoteDataReducer {
|
|
@@ -17,6 +16,7 @@ export class RemoteDataReducer {
|
|
|
17
16
|
const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];
|
|
18
17
|
const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);
|
|
19
18
|
if (!provider ||
|
|
19
|
+
!provider.cacheDurationInSeconds ||
|
|
20
20
|
loadRemoteDataAction.forceReload ||
|
|
21
21
|
item.status === DataStatus.none ||
|
|
22
22
|
item.status === DataStatus.error ||
|
|
@@ -37,7 +37,8 @@ export class RemoteDataReducer {
|
|
|
37
37
|
status: { $set: registerLoadedRemoteDataAction.status },
|
|
38
38
|
data: { $set: registerLoadedRemoteDataAction.data },
|
|
39
39
|
timestamp: { $set: new Date() },
|
|
40
|
-
message: { $set: registerLoadedRemoteDataAction.message }
|
|
40
|
+
message: { $set: registerLoadedRemoteDataAction.message },
|
|
41
|
+
error: { $set: registerLoadedRemoteDataAction.remoteCallError }
|
|
41
42
|
}
|
|
42
43
|
});
|
|
43
44
|
}
|
|
@@ -61,4 +62,4 @@ export const remoteDataReducerProvider = {
|
|
|
61
62
|
useClass: RemoteDataReducer,
|
|
62
63
|
multi: true
|
|
63
64
|
};
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWRhdGEucmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXJlbW90ZS1kYXRhL3NyYy9saWIvcmVkdWNlcnMvcmVtb3RlLWRhdGEucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFrQixhQUFhLEVBQVUsTUFBTSxhQUFhLENBQUM7QUFFcEUsT0FBTyxFQUF3RCxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN4RyxPQUFPLEVBQUUsVUFBVSxFQUFzQiwwQkFBMEIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN0RixPQUFPLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBR3hFLE1BQU0sT0FBTyxpQkFBaUI7SUFLNUIsWUFBNEQsbUJBQXlDO1FBRnJGLHFCQUFnQixHQUFhLENBQUMsb0JBQW9CLENBQUMsY0FBYyxFQUFFLG9CQUFvQixDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFHaEksSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksR0FBRyxDQUE2QixDQUFDLG1CQUFtQixJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNySSxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQVksRUFBRSxNQUFjO1FBQzdDLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRTtZQUNuQixLQUFLLG9CQUFvQixDQUFDLGNBQWM7Z0JBQ3RDLE1BQU0sb0JBQW9CLEdBQUcsTUFBOEIsQ0FBQztnQkFDNUQsTUFBTSxJQUFJLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzlFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBRXhGLElBQ0UsQ0FBQyxRQUFRO29CQUNULENBQUMsUUFBUSxDQUFDLHNCQUFzQjtvQkFDaEMsb0JBQW9CLENBQUMsV0FBVztvQkFDaEMsSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsSUFBSTtvQkFDL0IsSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsS0FBSztvQkFDaEMsQ0FBQyxJQUFJLENBQUMsU0FBUztvQkFDZixJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxzQkFBc0IsRUFDekY7b0JBQ0EsT0FBTyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUU7d0JBQ2xDLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLEVBQUU7NEJBQ3BDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsT0FBTyxFQUFFO3lCQUNyQztxQkFDRixDQUFDLENBQUM7aUJBQ0o7Z0JBRUQsTUFBTTtZQUVSLEtBQUssb0JBQW9CLENBQUMsd0JBQXdCO2dCQUNoRCxNQUFNLDhCQUE4QixHQUFHLE1BQXdDLENBQUM7Z0JBQ2hGLElBQUksSUFBSSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQyxhQUFhLENBQUMsRUFBRTtvQkFDcEYsT0FBTyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUU7d0JBQ2xDLENBQUMsOEJBQThCLENBQUMsYUFBYSxDQUFDLEVBQUU7NEJBQzlDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSw4QkFBOEIsQ0FBQyxNQUFNLEVBQUU7NEJBQ3ZELElBQUksRUFBRSxFQUFFLElBQUksRUFBRSw4QkFBOEIsQ0FBQyxJQUFJLEVBQUU7NEJBQ25ELFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFOzRCQUMvQixPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsOEJBQThCLENBQUMsT0FBTyxFQUFFOzRCQUN6RCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsOEJBQThCLENBQUMsZUFBZSxFQUFFO3lCQUNoRTtxQkFDRixDQUFDLENBQUM7aUJBQ0o7Z0JBRUQsTUFBTTtTQUNUO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs4R0FwRFUsaUJBQWlCLGtCQUtSLDBCQUEwQjtrSEFMbkMsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVU7OzBCQU1JLE1BQU07MkJBQUMsMEJBQTBCOzswQkFBRyxRQUFROztBQWtEM0QsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQWE7SUFDakQsT0FBTyxFQUFFLGFBQWE7SUFDdEIsUUFBUSxFQUFFLGlCQUFpQjtJQUMzQixLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBSZWR1Y2VyLCBTdGF0ZSwgTkdTU01fUkVEVUNFUiwgQWN0aW9uIH0gZnJvbSAnbmdzc20tc3RvcmUnO1xuXG5pbXBvcnQgeyBMb2FkUmVtb3RlRGF0YUFjdGlvbiwgUmVnaXN0ZXJMb2FkZWRSZW1vdGVEYXRhQWN0aW9uLCBSZW1vdGVEYXRhQWN0aW9uVHlwZSB9IGZyb20gJy4uL2FjdGlvbnMnO1xuaW1wb3J0IHsgRGF0YVN0YXR1cywgUmVtb3RlRGF0YVByb3ZpZGVyLCBOR1NTTV9SRU1PVEVfREFUQV9QUk9WSURFUiB9IGZyb20gJy4uL21vZGVsJztcbmltcG9ydCB7IHNlbGVjdFJlbW90ZURhdGFTdGF0ZSwgdXBkYXRlUmVtb3RlRGF0YVN0YXRlIH0gZnJvbSAnLi4vc3RhdGUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmVtb3RlRGF0YVJlZHVjZXIgaW1wbGVtZW50cyBSZWR1Y2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSByZW1vdGVEYXRhUHJvdmlkZXJzUGVyS2V5OiBNYXA8c3RyaW5nLCBSZW1vdGVEYXRhUHJvdmlkZXI+O1xuXG4gIHB1YmxpYyByZWFkb25seSBwcm9jZXNzZWRBY3Rpb25zOiBzdHJpbmdbXSA9IFtSZW1vdGVEYXRhQWN0aW9uVHlwZS5sb2FkUmVtb3RlRGF0YSwgUmVtb3RlRGF0YUFjdGlvblR5cGUucmVnaXN0ZXJMb2FkZWRSZW1vdGVEYXRhXTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KE5HU1NNX1JFTU9URV9EQVRBX1BST1ZJREVSKSBAT3B0aW9uYWwoKSByZW1vdGVEYXRhUHJvdmlkZXJzOiBSZW1vdGVEYXRhUHJvdmlkZXJbXSkge1xuICAgIHRoaXMucmVtb3RlRGF0YVByb3ZpZGVyc1BlcktleSA9IG5ldyBNYXA8c3RyaW5nLCBSZW1vdGVEYXRhUHJvdmlkZXI+KChyZW1vdGVEYXRhUHJvdmlkZXJzID8/IFtdKS5tYXAoKHIpID0+IFtyLnJlbW90ZURhdGFLZXksIHJdKSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlU3RhdGUoc3RhdGU6IFN0YXRlLCBhY3Rpb246IEFjdGlvbik6IFN0YXRlIHtcbiAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgICBjYXNlIFJlbW90ZURhdGFBY3Rpb25UeXBlLmxvYWRSZW1vdGVEYXRhOlxuICAgICAgICBjb25zdCBsb2FkUmVtb3RlRGF0YUFjdGlvbiA9IGFjdGlvbiBhcyBMb2FkUmVtb3RlRGF0YUFjdGlvbjtcbiAgICAgICAgY29uc3QgaXRlbSA9IHNlbGVjdFJlbW90ZURhdGFTdGF0ZShzdGF0ZSlbbG9hZFJlbW90ZURhdGFBY3Rpb24ucmVtb3RlRGF0YUtleV07XG4gICAgICAgIGNvbnN0IHByb3ZpZGVyID0gdGhpcy5yZW1vdGVEYXRhUHJvdmlkZXJzUGVyS2V5LmdldChsb2FkUmVtb3RlRGF0YUFjdGlvbi5yZW1vdGVEYXRhS2V5KTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgIXByb3ZpZGVyIHx8XG4gICAgICAgICAgIXByb3ZpZGVyLmNhY2hlRHVyYXRpb25JblNlY29uZHMgfHxcbiAgICAgICAgICBsb2FkUmVtb3RlRGF0YUFjdGlvbi5mb3JjZVJlbG9hZCB8fFxuICAgICAgICAgIGl0ZW0uc3RhdHVzID09PSBEYXRhU3RhdHVzLm5vbmUgfHxcbiAgICAgICAgICBpdGVtLnN0YXR1cyA9PT0gRGF0YVN0YXR1cy5lcnJvciB8fFxuICAgICAgICAgICFpdGVtLnRpbWVzdGFtcCB8fFxuICAgICAgICAgIG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gaXRlbS50aW1lc3RhbXAuZ2V0VGltZSgpID49IDEwMDAgKiBwcm92aWRlci5jYWNoZUR1cmF0aW9uSW5TZWNvbmRzXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiB1cGRhdGVSZW1vdGVEYXRhU3RhdGUoc3RhdGUsIHtcbiAgICAgICAgICAgIFtsb2FkUmVtb3RlRGF0YUFjdGlvbi5yZW1vdGVEYXRhS2V5XToge1xuICAgICAgICAgICAgICBzdGF0dXM6IHsgJHNldDogRGF0YVN0YXR1cy5sb2FkaW5nIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJlbW90ZURhdGFBY3Rpb25UeXBlLnJlZ2lzdGVyTG9hZGVkUmVtb3RlRGF0YTpcbiAgICAgICAgY29uc3QgcmVnaXN0ZXJMb2FkZWRSZW1vdGVEYXRhQWN0aW9uID0gYWN0aW9uIGFzIFJlZ2lzdGVyTG9hZGVkUmVtb3RlRGF0YUFjdGlvbjtcbiAgICAgICAgaWYgKHRoaXMucmVtb3RlRGF0YVByb3ZpZGVyc1BlcktleS5oYXMocmVnaXN0ZXJMb2FkZWRSZW1vdGVEYXRhQWN0aW9uLnJlbW90ZURhdGFLZXkpKSB7XG4gICAgICAgICAgcmV0dXJuIHVwZGF0ZVJlbW90ZURhdGFTdGF0ZShzdGF0ZSwge1xuICAgICAgICAgICAgW3JlZ2lzdGVyTG9hZGVkUmVtb3RlRGF0YUFjdGlvbi5yZW1vdGVEYXRhS2V5XToge1xuICAgICAgICAgICAgICBzdGF0dXM6IHsgJHNldDogcmVnaXN0ZXJMb2FkZWRSZW1vdGVEYXRhQWN0aW9uLnN0YXR1cyB9LFxuICAgICAgICAgICAgICBkYXRhOiB7ICRzZXQ6IHJlZ2lzdGVyTG9hZGVkUmVtb3RlRGF0YUFjdGlvbi5kYXRhIH0sXG4gICAgICAgICAgICAgIHRpbWVzdGFtcDogeyAkc2V0OiBuZXcgRGF0ZSgpIH0sXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHsgJHNldDogcmVnaXN0ZXJMb2FkZWRSZW1vdGVEYXRhQWN0aW9uLm1lc3NhZ2UgfSxcbiAgICAgICAgICAgICAgZXJyb3I6IHsgJHNldDogcmVnaXN0ZXJMb2FkZWRSZW1vdGVEYXRhQWN0aW9uLnJlbW90ZUNhbGxFcnJvciB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHJlbW90ZURhdGFSZWR1Y2VyUHJvdmlkZXI6IFByb3ZpZGVyID0ge1xuICBwcm92aWRlOiBOR1NTTV9SRURVQ0VSLFxuICB1c2VDbGFzczogUmVtb3RlRGF0YVJlZHVjZXIsXG4gIG11bHRpOiB0cnVlXG59O1xuIl19
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Inject, Injectable, Optional } from '@angular/core';
|
|
2
|
-
import { DataStatus } from './model';
|
|
3
|
-
import { NGSSM_REMOTE_DATA_PROVIDER } from './remote-data-provider';
|
|
2
|
+
import { DataStatus, NGSSM_REMOTE_DATA_PROVIDER } from './model';
|
|
4
3
|
import { updateRemoteDataState } from './state';
|
|
5
4
|
import * as i0 from "@angular/core";
|
|
6
5
|
export class RemoteDataStateInitializer {
|
|
@@ -22,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
|
|
|
22
21
|
}, {
|
|
23
22
|
type: Optional
|
|
24
23
|
}] }]; } });
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWRhdGEtc3RhdGUtaW5pdGlhbGl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1yZW1vdGUtZGF0YS9zcmMvbGliL3JlbW90ZS1kYXRhLXN0YXRlLWluaXRpYWxpemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUk3RCxPQUFPLEVBQUUsVUFBVSxFQUFzQiwwQkFBMEIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNyRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBR2hELE1BQU0sT0FBTywwQkFBMEI7SUFDckMsWUFBb0UsbUJBQXlDO1FBQXpDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBc0I7SUFBRyxDQUFDO0lBRTFHLGVBQWUsQ0FBQyxLQUFZO1FBQ2pDLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FDNUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQzlHLFNBQVMsQ0FDVixDQUFDO0lBQ0osQ0FBQzs7dUhBVFUsMEJBQTBCLGtCQUNqQiwwQkFBMEI7MkhBRG5DLDBCQUEwQjsyRkFBMUIsMEJBQTBCO2tCQUR0QyxVQUFVOzswQkFFSSxNQUFNOzJCQUFDLDBCQUEwQjs7MEJBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3RhdGUsIFN0YXRlSW5pdGlhbGl6ZXIgfSBmcm9tICduZ3NzbS1zdG9yZSc7XG5cbmltcG9ydCB7IERhdGFTdGF0dXMsIFJlbW90ZURhdGFQcm92aWRlciwgTkdTU01fUkVNT1RFX0RBVEFfUFJPVklERVIgfSBmcm9tICcuL21vZGVsJztcbmltcG9ydCB7IHVwZGF0ZVJlbW90ZURhdGFTdGF0ZSB9IGZyb20gJy4vc3RhdGUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmVtb3RlRGF0YVN0YXRlSW5pdGlhbGl6ZXIgaW1wbGVtZW50cyBTdGF0ZUluaXRpYWxpemVyIHtcbiAgY29uc3RydWN0b3IoQEluamVjdChOR1NTTV9SRU1PVEVfREFUQV9QUk9WSURFUikgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZW1vdGVEYXRhUHJvdmlkZXJzOiBSZW1vdGVEYXRhUHJvdmlkZXJbXSkge31cblxuICBwdWJsaWMgaW5pdGlhbGl6ZVN0YXRlKHN0YXRlOiBTdGF0ZSk6IFN0YXRlIHtcbiAgICBsZXQgdGVtcFN0YXRlID0gc3RhdGU7XG4gICAgcmV0dXJuICh0aGlzLnJlbW90ZURhdGFQcm92aWRlcnMgPz8gW10pLnJlZHVjZShcbiAgICAgIChzLCBwcm92aWRlcikgPT4gdXBkYXRlUmVtb3RlRGF0YVN0YXRlKHMsIHsgW3Byb3ZpZGVyLnJlbW90ZURhdGFLZXldOiB7ICRzZXQ6IHsgc3RhdHVzOiBEYXRhU3RhdHVzLm5vbmUgfSB9IH0pLFxuICAgICAgdGVtcFN0YXRlXG4gICAgKTtcbiAgfVxufVxuIl19
|
package/esm2020/public-api.mjs
CHANGED
|
@@ -4,8 +4,7 @@
|
|
|
4
4
|
export * from './lib/model';
|
|
5
5
|
export * from './lib/state';
|
|
6
6
|
export * from './lib/actions';
|
|
7
|
-
export * from './lib/remote-data-provider';
|
|
8
7
|
export * from './lib/guards';
|
|
9
8
|
export * from './lib/components/ngssm-remote-data-reload-button/ngssm-remote-data-reload-button.component';
|
|
10
9
|
export * from './lib/provide-ngssm-remote-data';
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXJlbW90ZS1kYXRhL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyw0RkFBNEYsQ0FBQztBQUMzRyxjQUFjLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZ3NzbS1yZW1vdGUtZGF0YVxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0YXRlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FjdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ3VhcmRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbmdzc20tcmVtb3RlLWRhdGEtcmVsb2FkLWJ1dHRvbi9uZ3NzbS1yZW1vdGUtZGF0YS1yZWxvYWQtYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcm92aWRlLW5nc3NtLXJlbW90ZS1kYXRhJztcbiJdfQ==
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, Injectable, Component, ChangeDetectionStrategy, Input, Inject, Optional, makeEnvironmentProviders } from '@angular/core';
|
|
1
3
|
import { __decorate } from 'tslib';
|
|
2
4
|
import update from 'immutability-helper';
|
|
3
5
|
import * as i1 from 'ngssm-store';
|
|
4
6
|
import { NgSsmFeatureState, NgSsmComponent, NGSSM_EFFECT, NGSSM_REDUCER, NGSSM_STATE_INITIALIZER } from 'ngssm-store';
|
|
5
|
-
import * as i0 from '@angular/core';
|
|
6
|
-
import { InjectionToken, Injectable, Component, ChangeDetectionStrategy, Input, Inject, Optional, makeEnvironmentProviders } from '@angular/core';
|
|
7
7
|
import * as i2 from '@angular/common';
|
|
8
8
|
import { DatePipe, CommonModule } from '@angular/common';
|
|
9
9
|
import * as i3 from '@angular/material/icon';
|
|
@@ -13,6 +13,7 @@ import { MatButtonModule } from '@angular/material/button';
|
|
|
13
13
|
import * as i5 from '@angular/material/tooltip';
|
|
14
14
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
15
15
|
import { BehaviorSubject, combineLatest } from 'rxjs';
|
|
16
|
+
import * as i1$1 from 'ngssm-toolkit';
|
|
16
17
|
|
|
17
18
|
var DataStatus;
|
|
18
19
|
(function (DataStatus) {
|
|
@@ -36,6 +37,8 @@ var RemoteCallStatus;
|
|
|
36
37
|
RemoteCallStatus["ko"] = "Ko";
|
|
37
38
|
})(RemoteCallStatus || (RemoteCallStatus = {}));
|
|
38
39
|
|
|
40
|
+
const NGSSM_REMOTE_DATA_PROVIDER = new InjectionToken('NGSSM_REMOTE_DATA_PROVIDER');
|
|
41
|
+
|
|
39
42
|
var RemoteDataStateSpecification_1;
|
|
40
43
|
const selectRemoteDataState = (state) => state[RemoteDataStateSpecification.featureStateKey];
|
|
41
44
|
const updateRemoteDataState = (state, command) => update(state, {
|
|
@@ -61,25 +64,25 @@ var RemoteDataActionType;
|
|
|
61
64
|
})(RemoteDataActionType || (RemoteDataActionType = {}));
|
|
62
65
|
|
|
63
66
|
class LoadRemoteDataAction {
|
|
64
|
-
constructor(remoteDataKey, forceReload) {
|
|
67
|
+
constructor(remoteDataKey, forceReload, params) {
|
|
65
68
|
this.remoteDataKey = remoteDataKey;
|
|
66
69
|
this.forceReload = forceReload;
|
|
70
|
+
this.params = params;
|
|
67
71
|
this.type = RemoteDataActionType.loadRemoteData;
|
|
68
72
|
}
|
|
69
73
|
}
|
|
70
74
|
|
|
71
75
|
class RegisterLoadedRemoteDataAction {
|
|
72
|
-
constructor(remoteDataKey, status, data, message) {
|
|
76
|
+
constructor(remoteDataKey, status, data, message, remoteCallError) {
|
|
73
77
|
this.remoteDataKey = remoteDataKey;
|
|
74
78
|
this.status = status;
|
|
75
79
|
this.data = data;
|
|
76
80
|
this.message = message;
|
|
81
|
+
this.remoteCallError = remoteCallError;
|
|
77
82
|
this.type = RemoteDataActionType.registerLoadedRemoteData;
|
|
78
83
|
}
|
|
79
84
|
}
|
|
80
85
|
|
|
81
|
-
const NGSSM_REMOTE_DATA_PROVIDER = new InjectionToken('NGSSM_REMOTE_DATA_PROVIDER');
|
|
82
|
-
|
|
83
86
|
class RemoteDataLoadingGuard {
|
|
84
87
|
constructor(store) {
|
|
85
88
|
this.store = store;
|
|
@@ -152,7 +155,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
|
|
|
152
155
|
}] } });
|
|
153
156
|
|
|
154
157
|
class RemoteDataLoadingEffect {
|
|
155
|
-
constructor(remoteDataProviders) {
|
|
158
|
+
constructor(remoteDataProviders, notifierService) {
|
|
159
|
+
this.notifierService = notifierService;
|
|
156
160
|
this.processedActions = [RemoteDataActionType.loadRemoteData];
|
|
157
161
|
this.remoteDataProvidersPerKey = new Map((remoteDataProviders !== null && remoteDataProviders !== void 0 ? remoteDataProviders : []).map((r) => [r.remoteDataKey, r]));
|
|
158
162
|
}
|
|
@@ -163,16 +167,26 @@ class RemoteDataLoadingEffect {
|
|
|
163
167
|
if (!item || !provider || item.status !== DataStatus.loading) {
|
|
164
168
|
return;
|
|
165
169
|
}
|
|
166
|
-
provider.get().subscribe({
|
|
167
|
-
next: (value) =>
|
|
170
|
+
provider.get(loadRemoteDataAction.params).subscribe({
|
|
171
|
+
next: (value) => {
|
|
172
|
+
var _a;
|
|
173
|
+
store.dispatchAction(new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.loaded, value));
|
|
174
|
+
if ((_a = loadRemoteDataAction.params) === null || _a === void 0 ? void 0 : _a.callbackAction) {
|
|
175
|
+
store.dispatchActionType(loadRemoteDataAction.params.callbackAction);
|
|
176
|
+
}
|
|
177
|
+
},
|
|
168
178
|
error: (error) => {
|
|
179
|
+
var _a;
|
|
169
180
|
console.error(`Unable to load data for '${loadRemoteDataAction.remoteDataKey}'`, error);
|
|
170
|
-
|
|
181
|
+
if ((_a = loadRemoteDataAction.params) === null || _a === void 0 ? void 0 : _a.errorNotificationMessage) {
|
|
182
|
+
this.notifierService.notifyError(loadRemoteDataAction.params.errorNotificationMessage(error === null || error === void 0 ? void 0 : error.error));
|
|
183
|
+
}
|
|
184
|
+
store.dispatchAction(new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.error, undefined, error === null || error === void 0 ? void 0 : error.error));
|
|
171
185
|
}
|
|
172
186
|
});
|
|
173
187
|
}
|
|
174
188
|
}
|
|
175
|
-
RemoteDataLoadingEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RemoteDataLoadingEffect, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
189
|
+
RemoteDataLoadingEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RemoteDataLoadingEffect, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }, { token: i1$1.NgssmNotifierService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
176
190
|
RemoteDataLoadingEffect.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RemoteDataLoadingEffect });
|
|
177
191
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RemoteDataLoadingEffect, decorators: [{
|
|
178
192
|
type: Injectable
|
|
@@ -182,7 +196,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
|
|
|
182
196
|
args: [NGSSM_REMOTE_DATA_PROVIDER]
|
|
183
197
|
}, {
|
|
184
198
|
type: Optional
|
|
185
|
-
}] }];
|
|
199
|
+
}] }, { type: i1$1.NgssmNotifierService }];
|
|
186
200
|
} });
|
|
187
201
|
const remoteDataLoadingEffectProvider = {
|
|
188
202
|
provide: NGSSM_EFFECT,
|
|
@@ -202,6 +216,7 @@ class RemoteDataReducer {
|
|
|
202
216
|
const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];
|
|
203
217
|
const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);
|
|
204
218
|
if (!provider ||
|
|
219
|
+
!provider.cacheDurationInSeconds ||
|
|
205
220
|
loadRemoteDataAction.forceReload ||
|
|
206
221
|
item.status === DataStatus.none ||
|
|
207
222
|
item.status === DataStatus.error ||
|
|
@@ -222,7 +237,8 @@ class RemoteDataReducer {
|
|
|
222
237
|
status: { $set: registerLoadedRemoteDataAction.status },
|
|
223
238
|
data: { $set: registerLoadedRemoteDataAction.data },
|
|
224
239
|
timestamp: { $set: new Date() },
|
|
225
|
-
message: { $set: registerLoadedRemoteDataAction.message }
|
|
240
|
+
message: { $set: registerLoadedRemoteDataAction.message },
|
|
241
|
+
error: { $set: registerLoadedRemoteDataAction.remoteCallError }
|
|
226
242
|
}
|
|
227
243
|
});
|
|
228
244
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngssm-remote-data.mjs","sources":["../../../projects/ngssm-remote-data/src/lib/model/data-status.ts","../../../projects/ngssm-remote-data/src/lib/model/remote-data.ts","../../../projects/ngssm-remote-data/src/lib/model/remote-call-status.ts","../../../projects/ngssm-remote-data/src/lib/state/remote-data.state.ts","../../../projects/ngssm-remote-data/src/lib/state/selectors.ts","../../../projects/ngssm-remote-data/src/lib/actions/remote-data-action-type.ts","../../../projects/ngssm-remote-data/src/lib/actions/load-remote-data.action.ts","../../../projects/ngssm-remote-data/src/lib/actions/register-loaded-remote-data.action.ts","../../../projects/ngssm-remote-data/src/lib/remote-data-provider.ts","../../../projects/ngssm-remote-data/src/lib/guards/remote-data-loading.guard.ts","../../../projects/ngssm-remote-data/src/lib/components/ngssm-remote-data-reload-button/ngssm-remote-data-reload-button.component.ts","../../../projects/ngssm-remote-data/src/lib/components/ngssm-remote-data-reload-button/ngssm-remote-data-reload-button.component.html","../../../projects/ngssm-remote-data/src/lib/effects/remote-data-loading.effect.ts","../../../projects/ngssm-remote-data/src/lib/reducers/remote-data.reducer.ts","../../../projects/ngssm-remote-data/src/lib/remote-data-state-initializer.ts","../../../projects/ngssm-remote-data/src/lib/provide-ngssm-remote-data.ts","../../../projects/ngssm-remote-data/src/public-api.ts","../../../projects/ngssm-remote-data/src/ngssm-remote-data.ts"],"sourcesContent":["export enum DataStatus {\n none = 'None',\n loading = 'Loading',\n loaded = 'Loaded',\n notFound = 'NotFound',\n error = 'Error'\n}\n","import { DataStatus } from './data-status';\n\nexport interface RemoteData<T> {\n status: DataStatus;\n data?: T;\n timestamp?: Date;\n message?: string;\n}\n\nexport const getDefaultRemoteData = <T>(defaultValue?: T): RemoteData<T> => ({\n status: DataStatus.none,\n data: defaultValue\n});\n","export enum RemoteCallStatus {\n none = 'None',\n inProgress = 'In progress',\n done = 'Done',\n ko = 'Ko'\n}\n","import update, { Spec } from 'immutability-helper';\n\nimport { NgSsmFeatureState, State } from 'ngssm-store';\n\nimport { RemoteData } from '../model';\n\nexport const selectRemoteDataState = (state: State): RemoteDataState =>\n state[RemoteDataStateSpecification.featureStateKey] as RemoteDataState;\n\nexport const updateRemoteDataState = (state: State, command: Spec<RemoteDataState, never>): State =>\n update(state, {\n [RemoteDataStateSpecification.featureStateKey]: command\n });\n\nexport interface RemoteDataState {\n [key: string]: RemoteData<any>;\n}\n\n@NgSsmFeatureState({\n featureStateKey: RemoteDataStateSpecification.featureStateKey,\n initialState: RemoteDataStateSpecification.initialState\n})\nexport class RemoteDataStateSpecification {\n public static readonly featureStateKey = 'remote-data-state';\n public static readonly initialState: RemoteDataState = {};\n}\n","import { State } from 'ngssm-store';\n\nimport { selectRemoteDataState } from './remote-data.state';\n\nexport const selectRemoteData = (state: State, remoteDataKey: string) => selectRemoteDataState(state)[remoteDataKey];\n","export enum RemoteDataActionType {\n loadRemoteData = '[RemoteDataActionType] loadRemoteData',\n registerLoadedRemoteData = '[RemoteDataActionType] registerLoadedRemoteData'\n}\n","import { Action } from 'ngssm-store';\n\nimport { RemoteDataActionType } from './remote-data-action-type';\n\nexport class LoadRemoteDataAction implements Action {\n public readonly type: string = RemoteDataActionType.loadRemoteData;\n\n constructor(public readonly remoteDataKey: string, public readonly forceReload: boolean) {}\n}\n","import { Action } from 'ngssm-store';\n\nimport { DataStatus } from '../model';\nimport { RemoteDataActionType } from './remote-data-action-type';\n\nexport class RegisterLoadedRemoteDataAction implements Action {\n public readonly type: string = RemoteDataActionType.registerLoadedRemoteData;\n\n constructor(\n public readonly remoteDataKey: string,\n public readonly status: DataStatus,\n public readonly data: any,\n public readonly message?: string\n ) {}\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport interface RemoteDataProvider {\n readonly remoteDataKey: string;\n readonly cacheDurationInSeconds: number;\n\n get(): Observable<any>;\n}\n\nexport const NGSSM_REMOTE_DATA_PROVIDER = new InjectionToken<RemoteDataProvider>('NGSSM_REMOTE_DATA_PROVIDER');\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nimport { Store } from 'ngssm-store';\n\nimport { LoadRemoteDataAction } from '../actions';\n\nexport interface RemoteDataLoadingGuardItem {\n remoteDataKey: string;\n forceReload?: boolean;\n}\n\nexport interface RemoteDataLoadingGuardParameters {\n remoteDataItems: RemoteDataLoadingGuardItem[];\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RemoteDataLoadingGuard implements CanActivate {\n constructor(private store: Store) {}\n\n public canActivate(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n const parameters = route.data as RemoteDataLoadingGuardParameters;\n (parameters?.remoteDataItems ?? []).forEach((item) => {\n this.store.dispatchAction(new LoadRemoteDataAction(item.remoteDataKey, item.forceReload === true));\n });\n\n return true;\n }\n}\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\n\nimport { NgSsmComponent, Store } from 'ngssm-store';\n\nimport { LoadRemoteDataAction } from '../../actions';\nimport { selectRemoteDataState } from '../../state';\nimport { DataStatus } from '../../model';\n\nconst datePipe = new DatePipe('en-US');\n\n@Component({\n selector: 'ngssm-remote-data-reload-button',\n standalone: true,\n imports: [CommonModule, MatIconModule, MatButtonModule, MatTooltipModule],\n templateUrl: './ngssm-remote-data-reload-button.component.html',\n styleUrls: ['./ngssm-remote-data-reload-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmRemoteDataReloadButtonComponent extends NgSsmComponent {\n private readonly _remoteDataKey$ = new BehaviorSubject<string>('');\n private readonly _tooltipMessage$ = new BehaviorSubject<string>('');\n private readonly _disabled$ = new BehaviorSubject<boolean>(false);\n\n @Input() actionTypes: string[] = [];\n\n constructor(store: Store) {\n super(store);\n combineLatest([this.watch((s) => selectRemoteDataState(s)), this._remoteDataKey$]).subscribe((values) => {\n let tooltiMessage = 'Reload data.';\n let disabled = true;\n if (values[1]) {\n const timestamp = values[0][values[1]]?.timestamp;\n if (timestamp) {\n tooltiMessage = [tooltiMessage, `Loaded at ${datePipe.transform(timestamp, 'mediumTime')}`].join('\\n');\n }\n\n disabled = (values[0][values[1]]?.status ?? DataStatus.loading) === DataStatus.loading;\n }\n\n this._tooltipMessage$.next(tooltiMessage);\n this._disabled$.next(disabled);\n });\n }\n\n @Input() set remoteDataKey(value: string) {\n this._remoteDataKey$.next(value);\n }\n\n public get tooltipMessage$(): Observable<string> {\n return this._tooltipMessage$.asObservable();\n }\n\n public get disabled$(): Observable<boolean> {\n return this._disabled$.asObservable();\n }\n\n public reload(): void {\n this.dispatchAction(new LoadRemoteDataAction(this._remoteDataKey$.getValue(), true));\n\n (this.actionTypes ?? []).forEach((type) => this.dispatchActionType(type));\n }\n}\n","<button mat-icon-button color=\"primary\" (click)=\"reload()\" [matTooltip]=\"(tooltipMessage$ | async) ?? 'Reload'\"\n [disabled]=\"disabled$ | async\">\n <mat-icon class=\"fa-solid fa-rotate-right\"></mat-icon>\n</button>","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Effect, Store, State, Action, NGSSM_EFFECT } from 'ngssm-store';\n\nimport { LoadRemoteDataAction, RegisterLoadedRemoteDataAction, RemoteDataActionType } from '../actions';\nimport { DataStatus } from '../model';\nimport { RemoteDataProvider, NGSSM_REMOTE_DATA_PROVIDER } from '../remote-data-provider';\nimport { selectRemoteDataState } from '../state';\n\n@Injectable()\nexport class RemoteDataLoadingEffect implements Effect {\n private readonly remoteDataProvidersPerKey: Map<string, RemoteDataProvider>;\n\n public readonly processedActions: string[] = [RemoteDataActionType.loadRemoteData];\n\n constructor(@Inject(NGSSM_REMOTE_DATA_PROVIDER) @Optional() remoteDataProviders: RemoteDataProvider[]) {\n this.remoteDataProvidersPerKey = new Map<string, RemoteDataProvider>((remoteDataProviders ?? []).map((r) => [r.remoteDataKey, r]));\n }\n\n public processAction(store: Store, state: State, action: Action): void {\n const loadRemoteDataAction = action as LoadRemoteDataAction;\n const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];\n const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);\n\n if (!item || !provider || item.status !== DataStatus.loading) {\n return;\n }\n\n provider.get().subscribe({\n next: (value) =>\n store.dispatchAction(new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.loaded, value)),\n error: (error) => {\n console.error(`Unable to load data for '${loadRemoteDataAction.remoteDataKey}'`, error);\n store.dispatchAction(new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.error, undefined));\n }\n });\n }\n}\n\nexport const remoteDataLoadingEffectProvider: Provider = {\n provide: NGSSM_EFFECT,\n useClass: RemoteDataLoadingEffect,\n multi: true\n};\n","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Reducer, State, NGSSM_REDUCER, Action } from 'ngssm-store';\n\nimport { LoadRemoteDataAction, RegisterLoadedRemoteDataAction, RemoteDataActionType } from '../actions';\nimport { DataStatus } from '../model';\nimport { RemoteDataProvider, NGSSM_REMOTE_DATA_PROVIDER } from '../remote-data-provider';\nimport { selectRemoteDataState, updateRemoteDataState } from '../state';\n\n@Injectable()\nexport class RemoteDataReducer implements Reducer {\n private readonly remoteDataProvidersPerKey: Map<string, RemoteDataProvider>;\n\n public readonly processedActions: string[] = [RemoteDataActionType.loadRemoteData, RemoteDataActionType.registerLoadedRemoteData];\n\n constructor(@Inject(NGSSM_REMOTE_DATA_PROVIDER) @Optional() remoteDataProviders: RemoteDataProvider[]) {\n this.remoteDataProvidersPerKey = new Map<string, RemoteDataProvider>((remoteDataProviders ?? []).map((r) => [r.remoteDataKey, r]));\n }\n\n public updateState(state: State, action: Action): State {\n switch (action.type) {\n case RemoteDataActionType.loadRemoteData:\n const loadRemoteDataAction = action as LoadRemoteDataAction;\n const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];\n const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);\n\n if (\n !provider ||\n loadRemoteDataAction.forceReload ||\n item.status === DataStatus.none ||\n item.status === DataStatus.error ||\n !item.timestamp ||\n new Date().getTime() - item.timestamp.getTime() >= 1000 * provider.cacheDurationInSeconds\n ) {\n return updateRemoteDataState(state, {\n [loadRemoteDataAction.remoteDataKey]: {\n status: { $set: DataStatus.loading }\n }\n });\n }\n\n break;\n\n case RemoteDataActionType.registerLoadedRemoteData:\n const registerLoadedRemoteDataAction = action as RegisterLoadedRemoteDataAction;\n if (this.remoteDataProvidersPerKey.has(registerLoadedRemoteDataAction.remoteDataKey)) {\n return updateRemoteDataState(state, {\n [registerLoadedRemoteDataAction.remoteDataKey]: {\n status: { $set: registerLoadedRemoteDataAction.status },\n data: { $set: registerLoadedRemoteDataAction.data },\n timestamp: { $set: new Date() },\n message: { $set: registerLoadedRemoteDataAction.message }\n }\n });\n }\n\n break;\n }\n\n return state;\n }\n}\n\nexport const remoteDataReducerProvider: Provider = {\n provide: NGSSM_REDUCER,\n useClass: RemoteDataReducer,\n multi: true\n};\n","import { Inject, Injectable, Optional } from '@angular/core';\n\nimport { State, StateInitializer } from 'ngssm-store';\n\nimport { DataStatus } from './model';\nimport { RemoteDataProvider, NGSSM_REMOTE_DATA_PROVIDER } from './remote-data-provider';\nimport { updateRemoteDataState } from './state';\n\n@Injectable()\nexport class RemoteDataStateInitializer implements StateInitializer {\n constructor(@Inject(NGSSM_REMOTE_DATA_PROVIDER) @Optional() private remoteDataProviders: RemoteDataProvider[]) {}\n\n public initializeState(state: State): State {\n let tempState = state;\n return (this.remoteDataProviders ?? []).reduce(\n (s, provider) => updateRemoteDataState(s, { [provider.remoteDataKey]: { $set: { status: DataStatus.none } } }),\n tempState\n );\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\n\nimport { NGSSM_STATE_INITIALIZER } from 'ngssm-store';\n\nimport { remoteDataLoadingEffectProvider } from './effects/remote-data-loading.effect';\nimport { remoteDataReducerProvider } from './reducers/remote-data.reducer';\nimport { RemoteDataStateInitializer } from './remote-data-state-initializer';\n\nexport const provideNgssmRemoteData = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n remoteDataReducerProvider,\n remoteDataLoadingEffectProvider,\n { provide: NGSSM_STATE_INITIALIZER, useClass: RemoteDataStateInitializer, multi: true }\n ]);\n};\n","/*\n * Public API Surface of ngssm-remote-data\n */\n\nexport * from './lib/model';\nexport * from './lib/state';\nexport * from './lib/actions';\nexport * from './lib/remote-data-provider';\nexport * from './lib/guards';\nexport * from './lib/components/ngssm-remote-data-reload-button/ngssm-remote-data-reload-button.component';\nexport * from './lib/provide-ngssm-remote-data';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngssm-remote-data.mjs","sources":["../../../projects/ngssm-remote-data/src/lib/model/data-status.ts","../../../projects/ngssm-remote-data/src/lib/model/remote-data.ts","../../../projects/ngssm-remote-data/src/lib/model/remote-call-status.ts","../../../projects/ngssm-remote-data/src/lib/model/remote-data-provider.ts","../../../projects/ngssm-remote-data/src/lib/state/remote-data.state.ts","../../../projects/ngssm-remote-data/src/lib/state/selectors.ts","../../../projects/ngssm-remote-data/src/lib/actions/remote-data-action-type.ts","../../../projects/ngssm-remote-data/src/lib/actions/load-remote-data.action.ts","../../../projects/ngssm-remote-data/src/lib/actions/register-loaded-remote-data.action.ts","../../../projects/ngssm-remote-data/src/lib/guards/remote-data-loading.guard.ts","../../../projects/ngssm-remote-data/src/lib/components/ngssm-remote-data-reload-button/ngssm-remote-data-reload-button.component.ts","../../../projects/ngssm-remote-data/src/lib/components/ngssm-remote-data-reload-button/ngssm-remote-data-reload-button.component.html","../../../projects/ngssm-remote-data/src/lib/effects/remote-data-loading.effect.ts","../../../projects/ngssm-remote-data/src/lib/reducers/remote-data.reducer.ts","../../../projects/ngssm-remote-data/src/lib/remote-data-state-initializer.ts","../../../projects/ngssm-remote-data/src/lib/provide-ngssm-remote-data.ts","../../../projects/ngssm-remote-data/src/public-api.ts","../../../projects/ngssm-remote-data/src/ngssm-remote-data.ts"],"sourcesContent":["export enum DataStatus {\n none = 'None',\n loading = 'Loading',\n loaded = 'Loaded',\n notFound = 'NotFound',\n error = 'Error'\n}\n","import { DataStatus } from './data-status';\nimport { RemoteCallError } from './remote-call-error';\n\nexport interface RemoteData<T> {\n status: DataStatus;\n data?: T;\n timestamp?: Date;\n message?: string;\n error?: RemoteCallError;\n}\n\nexport const getDefaultRemoteData = <T>(defaultValue?: T): RemoteData<T> => ({\n status: DataStatus.none,\n data: defaultValue\n});\n","export enum RemoteCallStatus {\n none = 'None',\n inProgress = 'In progress',\n done = 'Done',\n ko = 'Ko'\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { RemoteDataGetterParams } from './remote-data-getter-params';\n\nexport interface RemoteDataProvider<TData = any, TValue = any> {\n readonly remoteDataKey: string;\n readonly cacheDurationInSeconds?: number;\n\n get(params?: RemoteDataGetterParams<TValue>): Observable<TData>;\n}\n\nexport const NGSSM_REMOTE_DATA_PROVIDER = new InjectionToken<RemoteDataProvider>('NGSSM_REMOTE_DATA_PROVIDER');\n","import update, { Spec } from 'immutability-helper';\n\nimport { NgSsmFeatureState, State } from 'ngssm-store';\n\nimport { RemoteData } from '../model';\n\nexport const selectRemoteDataState = (state: State): RemoteDataState =>\n state[RemoteDataStateSpecification.featureStateKey] as RemoteDataState;\n\nexport const updateRemoteDataState = (state: State, command: Spec<RemoteDataState, never>): State =>\n update(state, {\n [RemoteDataStateSpecification.featureStateKey]: command\n });\n\nexport interface RemoteDataState {\n [key: string]: RemoteData<any>;\n}\n\n@NgSsmFeatureState({\n featureStateKey: RemoteDataStateSpecification.featureStateKey,\n initialState: RemoteDataStateSpecification.initialState\n})\nexport class RemoteDataStateSpecification {\n public static readonly featureStateKey = 'remote-data-state';\n public static readonly initialState: RemoteDataState = {};\n}\n","import { State } from 'ngssm-store';\n\nimport { selectRemoteDataState } from './remote-data.state';\n\nexport const selectRemoteData = (state: State, remoteDataKey: string) => selectRemoteDataState(state)[remoteDataKey];\n","export enum RemoteDataActionType {\n loadRemoteData = '[RemoteDataActionType] loadRemoteData',\n registerLoadedRemoteData = '[RemoteDataActionType] registerLoadedRemoteData'\n}\n","import { Action } from 'ngssm-store';\n\nimport { RemoteDataGetterParams } from '../model';\nimport { RemoteDataActionType } from './remote-data-action-type';\n\nexport class LoadRemoteDataAction<TValue = any> implements Action {\n public readonly type: string = RemoteDataActionType.loadRemoteData;\n\n constructor(\n public readonly remoteDataKey: string,\n public readonly forceReload: boolean,\n public readonly params?: RemoteDataGetterParams<TValue>\n ) {}\n}\n","import { Action } from 'ngssm-store';\n\nimport { DataStatus, RemoteCallError } from '../model';\nimport { RemoteDataActionType } from './remote-data-action-type';\n\nexport class RegisterLoadedRemoteDataAction implements Action {\n public readonly type: string = RemoteDataActionType.registerLoadedRemoteData;\n\n constructor(\n public readonly remoteDataKey: string,\n public readonly status: DataStatus,\n public readonly data: any,\n public readonly message?: string,\n public readonly remoteCallError?: RemoteCallError\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nimport { Store } from 'ngssm-store';\n\nimport { LoadRemoteDataAction } from '../actions';\n\nexport interface RemoteDataLoadingGuardItem {\n remoteDataKey: string;\n forceReload?: boolean;\n}\n\nexport interface RemoteDataLoadingGuardParameters {\n remoteDataItems: RemoteDataLoadingGuardItem[];\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RemoteDataLoadingGuard implements CanActivate {\n constructor(private store: Store) {}\n\n public canActivate(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n const parameters = route.data as RemoteDataLoadingGuardParameters;\n (parameters?.remoteDataItems ?? []).forEach((item) => {\n this.store.dispatchAction(new LoadRemoteDataAction(item.remoteDataKey, item.forceReload === true));\n });\n\n return true;\n }\n}\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\n\nimport { NgSsmComponent, Store } from 'ngssm-store';\n\nimport { LoadRemoteDataAction } from '../../actions';\nimport { selectRemoteDataState } from '../../state';\nimport { DataStatus } from '../../model';\n\nconst datePipe = new DatePipe('en-US');\n\n@Component({\n selector: 'ngssm-remote-data-reload-button',\n standalone: true,\n imports: [CommonModule, MatIconModule, MatButtonModule, MatTooltipModule],\n templateUrl: './ngssm-remote-data-reload-button.component.html',\n styleUrls: ['./ngssm-remote-data-reload-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmRemoteDataReloadButtonComponent extends NgSsmComponent {\n private readonly _remoteDataKey$ = new BehaviorSubject<string>('');\n private readonly _tooltipMessage$ = new BehaviorSubject<string>('');\n private readonly _disabled$ = new BehaviorSubject<boolean>(false);\n\n @Input() actionTypes: string[] = [];\n\n constructor(store: Store) {\n super(store);\n combineLatest([this.watch((s) => selectRemoteDataState(s)), this._remoteDataKey$]).subscribe((values) => {\n let tooltiMessage = 'Reload data.';\n let disabled = true;\n if (values[1]) {\n const timestamp = values[0][values[1]]?.timestamp;\n if (timestamp) {\n tooltiMessage = [tooltiMessage, `Loaded at ${datePipe.transform(timestamp, 'mediumTime')}`].join('\\n');\n }\n\n disabled = (values[0][values[1]]?.status ?? DataStatus.loading) === DataStatus.loading;\n }\n\n this._tooltipMessage$.next(tooltiMessage);\n this._disabled$.next(disabled);\n });\n }\n\n @Input() set remoteDataKey(value: string) {\n this._remoteDataKey$.next(value);\n }\n\n public get tooltipMessage$(): Observable<string> {\n return this._tooltipMessage$.asObservable();\n }\n\n public get disabled$(): Observable<boolean> {\n return this._disabled$.asObservable();\n }\n\n public reload(): void {\n this.dispatchAction(new LoadRemoteDataAction(this._remoteDataKey$.getValue(), true));\n\n (this.actionTypes ?? []).forEach((type) => this.dispatchActionType(type));\n }\n}\n","<button mat-icon-button color=\"primary\" (click)=\"reload()\" [matTooltip]=\"(tooltipMessage$ | async) ?? 'Reload'\"\n [disabled]=\"disabled$ | async\">\n <mat-icon class=\"fa-solid fa-rotate-right\"></mat-icon>\n</button>","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Effect, Store, State, Action, NGSSM_EFFECT } from 'ngssm-store';\nimport { NgssmNotifierService } from 'ngssm-toolkit';\n\nimport { LoadRemoteDataAction, RegisterLoadedRemoteDataAction, RemoteDataActionType } from '../actions';\nimport { DataStatus, RemoteDataProvider, NGSSM_REMOTE_DATA_PROVIDER } from '../model';\nimport { selectRemoteDataState } from '../state';\n\n@Injectable()\nexport class RemoteDataLoadingEffect implements Effect {\n private readonly remoteDataProvidersPerKey: Map<string, RemoteDataProvider>;\n\n public readonly processedActions: string[] = [RemoteDataActionType.loadRemoteData];\n\n constructor(\n @Inject(NGSSM_REMOTE_DATA_PROVIDER) @Optional() remoteDataProviders: RemoteDataProvider[],\n private notifierService: NgssmNotifierService\n ) {\n this.remoteDataProvidersPerKey = new Map<string, RemoteDataProvider>((remoteDataProviders ?? []).map((r) => [r.remoteDataKey, r]));\n }\n\n public processAction(store: Store, state: State, action: Action): void {\n const loadRemoteDataAction = action as LoadRemoteDataAction;\n const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];\n const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);\n\n if (!item || !provider || item.status !== DataStatus.loading) {\n return;\n }\n\n provider.get(loadRemoteDataAction.params).subscribe({\n next: (value) => {\n store.dispatchAction(new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.loaded, value));\n if (loadRemoteDataAction.params?.callbackAction) {\n store.dispatchActionType(loadRemoteDataAction.params.callbackAction);\n }\n },\n error: (error) => {\n console.error(`Unable to load data for '${loadRemoteDataAction.remoteDataKey}'`, error);\n if (loadRemoteDataAction.params?.errorNotificationMessage) {\n this.notifierService.notifyError(loadRemoteDataAction.params.errorNotificationMessage(error?.error));\n }\n\n store.dispatchAction(\n new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.error, undefined, error?.error)\n );\n }\n });\n }\n}\n\nexport const remoteDataLoadingEffectProvider: Provider = {\n provide: NGSSM_EFFECT,\n useClass: RemoteDataLoadingEffect,\n multi: true\n};\n","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Reducer, State, NGSSM_REDUCER, Action } from 'ngssm-store';\n\nimport { LoadRemoteDataAction, RegisterLoadedRemoteDataAction, RemoteDataActionType } from '../actions';\nimport { DataStatus, RemoteDataProvider, NGSSM_REMOTE_DATA_PROVIDER } from '../model';\nimport { selectRemoteDataState, updateRemoteDataState } from '../state';\n\n@Injectable()\nexport class RemoteDataReducer implements Reducer {\n private readonly remoteDataProvidersPerKey: Map<string, RemoteDataProvider>;\n\n public readonly processedActions: string[] = [RemoteDataActionType.loadRemoteData, RemoteDataActionType.registerLoadedRemoteData];\n\n constructor(@Inject(NGSSM_REMOTE_DATA_PROVIDER) @Optional() remoteDataProviders: RemoteDataProvider[]) {\n this.remoteDataProvidersPerKey = new Map<string, RemoteDataProvider>((remoteDataProviders ?? []).map((r) => [r.remoteDataKey, r]));\n }\n\n public updateState(state: State, action: Action): State {\n switch (action.type) {\n case RemoteDataActionType.loadRemoteData:\n const loadRemoteDataAction = action as LoadRemoteDataAction;\n const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];\n const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);\n\n if (\n !provider ||\n !provider.cacheDurationInSeconds ||\n loadRemoteDataAction.forceReload ||\n item.status === DataStatus.none ||\n item.status === DataStatus.error ||\n !item.timestamp ||\n new Date().getTime() - item.timestamp.getTime() >= 1000 * provider.cacheDurationInSeconds\n ) {\n return updateRemoteDataState(state, {\n [loadRemoteDataAction.remoteDataKey]: {\n status: { $set: DataStatus.loading }\n }\n });\n }\n\n break;\n\n case RemoteDataActionType.registerLoadedRemoteData:\n const registerLoadedRemoteDataAction = action as RegisterLoadedRemoteDataAction;\n if (this.remoteDataProvidersPerKey.has(registerLoadedRemoteDataAction.remoteDataKey)) {\n return updateRemoteDataState(state, {\n [registerLoadedRemoteDataAction.remoteDataKey]: {\n status: { $set: registerLoadedRemoteDataAction.status },\n data: { $set: registerLoadedRemoteDataAction.data },\n timestamp: { $set: new Date() },\n message: { $set: registerLoadedRemoteDataAction.message },\n error: { $set: registerLoadedRemoteDataAction.remoteCallError }\n }\n });\n }\n\n break;\n }\n\n return state;\n }\n}\n\nexport const remoteDataReducerProvider: Provider = {\n provide: NGSSM_REDUCER,\n useClass: RemoteDataReducer,\n multi: true\n};\n","import { Inject, Injectable, Optional } from '@angular/core';\n\nimport { State, StateInitializer } from 'ngssm-store';\n\nimport { DataStatus, RemoteDataProvider, NGSSM_REMOTE_DATA_PROVIDER } from './model';\nimport { updateRemoteDataState } from './state';\n\n@Injectable()\nexport class RemoteDataStateInitializer implements StateInitializer {\n constructor(@Inject(NGSSM_REMOTE_DATA_PROVIDER) @Optional() private remoteDataProviders: RemoteDataProvider[]) {}\n\n public initializeState(state: State): State {\n let tempState = state;\n return (this.remoteDataProviders ?? []).reduce(\n (s, provider) => updateRemoteDataState(s, { [provider.remoteDataKey]: { $set: { status: DataStatus.none } } }),\n tempState\n );\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\n\nimport { NGSSM_STATE_INITIALIZER } from 'ngssm-store';\n\nimport { remoteDataLoadingEffectProvider } from './effects/remote-data-loading.effect';\nimport { remoteDataReducerProvider } from './reducers/remote-data.reducer';\nimport { RemoteDataStateInitializer } from './remote-data-state-initializer';\n\nexport const provideNgssmRemoteData = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n remoteDataReducerProvider,\n remoteDataLoadingEffectProvider,\n { provide: NGSSM_STATE_INITIALIZER, useClass: RemoteDataStateInitializer, multi: true }\n ]);\n};\n","/*\n * Public API Surface of ngssm-remote-data\n */\n\nexport * from './lib/model';\nexport * from './lib/state';\nexport * from './lib/actions';\nexport * from './lib/guards';\nexport * from './lib/components/ngssm-remote-data-reload-button/ngssm-remote-data-reload-button.component';\nexport * from './lib/provide-ngssm-remote-data';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, Injectable, Component, ChangeDetectionStrategy, Input, Inject, Optional, makeEnvironmentProviders } from '@angular/core';
|
|
1
3
|
import { __decorate } from 'tslib';
|
|
2
4
|
import update from 'immutability-helper';
|
|
3
5
|
import * as i1 from 'ngssm-store';
|
|
4
6
|
import { NgSsmFeatureState, NgSsmComponent, NGSSM_EFFECT, NGSSM_REDUCER, NGSSM_STATE_INITIALIZER } from 'ngssm-store';
|
|
5
|
-
import * as i0 from '@angular/core';
|
|
6
|
-
import { InjectionToken, Injectable, Component, ChangeDetectionStrategy, Input, Inject, Optional, makeEnvironmentProviders } from '@angular/core';
|
|
7
7
|
import * as i2 from '@angular/common';
|
|
8
8
|
import { DatePipe, CommonModule } from '@angular/common';
|
|
9
9
|
import * as i3 from '@angular/material/icon';
|
|
@@ -13,6 +13,7 @@ import { MatButtonModule } from '@angular/material/button';
|
|
|
13
13
|
import * as i5 from '@angular/material/tooltip';
|
|
14
14
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
15
15
|
import { BehaviorSubject, combineLatest } from 'rxjs';
|
|
16
|
+
import * as i1$1 from 'ngssm-toolkit';
|
|
16
17
|
|
|
17
18
|
var DataStatus;
|
|
18
19
|
(function (DataStatus) {
|
|
@@ -36,6 +37,8 @@ var RemoteCallStatus;
|
|
|
36
37
|
RemoteCallStatus["ko"] = "Ko";
|
|
37
38
|
})(RemoteCallStatus || (RemoteCallStatus = {}));
|
|
38
39
|
|
|
40
|
+
const NGSSM_REMOTE_DATA_PROVIDER = new InjectionToken('NGSSM_REMOTE_DATA_PROVIDER');
|
|
41
|
+
|
|
39
42
|
var RemoteDataStateSpecification_1;
|
|
40
43
|
const selectRemoteDataState = (state) => state[RemoteDataStateSpecification.featureStateKey];
|
|
41
44
|
const updateRemoteDataState = (state, command) => update(state, {
|
|
@@ -61,25 +64,25 @@ var RemoteDataActionType;
|
|
|
61
64
|
})(RemoteDataActionType || (RemoteDataActionType = {}));
|
|
62
65
|
|
|
63
66
|
class LoadRemoteDataAction {
|
|
64
|
-
constructor(remoteDataKey, forceReload) {
|
|
67
|
+
constructor(remoteDataKey, forceReload, params) {
|
|
65
68
|
this.remoteDataKey = remoteDataKey;
|
|
66
69
|
this.forceReload = forceReload;
|
|
70
|
+
this.params = params;
|
|
67
71
|
this.type = RemoteDataActionType.loadRemoteData;
|
|
68
72
|
}
|
|
69
73
|
}
|
|
70
74
|
|
|
71
75
|
class RegisterLoadedRemoteDataAction {
|
|
72
|
-
constructor(remoteDataKey, status, data, message) {
|
|
76
|
+
constructor(remoteDataKey, status, data, message, remoteCallError) {
|
|
73
77
|
this.remoteDataKey = remoteDataKey;
|
|
74
78
|
this.status = status;
|
|
75
79
|
this.data = data;
|
|
76
80
|
this.message = message;
|
|
81
|
+
this.remoteCallError = remoteCallError;
|
|
77
82
|
this.type = RemoteDataActionType.registerLoadedRemoteData;
|
|
78
83
|
}
|
|
79
84
|
}
|
|
80
85
|
|
|
81
|
-
const NGSSM_REMOTE_DATA_PROVIDER = new InjectionToken('NGSSM_REMOTE_DATA_PROVIDER');
|
|
82
|
-
|
|
83
86
|
class RemoteDataLoadingGuard {
|
|
84
87
|
constructor(store) {
|
|
85
88
|
this.store = store;
|
|
@@ -149,7 +152,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
|
|
|
149
152
|
}] } });
|
|
150
153
|
|
|
151
154
|
class RemoteDataLoadingEffect {
|
|
152
|
-
constructor(remoteDataProviders) {
|
|
155
|
+
constructor(remoteDataProviders, notifierService) {
|
|
156
|
+
this.notifierService = notifierService;
|
|
153
157
|
this.processedActions = [RemoteDataActionType.loadRemoteData];
|
|
154
158
|
this.remoteDataProvidersPerKey = new Map((remoteDataProviders ?? []).map((r) => [r.remoteDataKey, r]));
|
|
155
159
|
}
|
|
@@ -160,16 +164,24 @@ class RemoteDataLoadingEffect {
|
|
|
160
164
|
if (!item || !provider || item.status !== DataStatus.loading) {
|
|
161
165
|
return;
|
|
162
166
|
}
|
|
163
|
-
provider.get().subscribe({
|
|
164
|
-
next: (value) =>
|
|
167
|
+
provider.get(loadRemoteDataAction.params).subscribe({
|
|
168
|
+
next: (value) => {
|
|
169
|
+
store.dispatchAction(new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.loaded, value));
|
|
170
|
+
if (loadRemoteDataAction.params?.callbackAction) {
|
|
171
|
+
store.dispatchActionType(loadRemoteDataAction.params.callbackAction);
|
|
172
|
+
}
|
|
173
|
+
},
|
|
165
174
|
error: (error) => {
|
|
166
175
|
console.error(`Unable to load data for '${loadRemoteDataAction.remoteDataKey}'`, error);
|
|
167
|
-
|
|
176
|
+
if (loadRemoteDataAction.params?.errorNotificationMessage) {
|
|
177
|
+
this.notifierService.notifyError(loadRemoteDataAction.params.errorNotificationMessage(error?.error));
|
|
178
|
+
}
|
|
179
|
+
store.dispatchAction(new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.error, undefined, error?.error));
|
|
168
180
|
}
|
|
169
181
|
});
|
|
170
182
|
}
|
|
171
183
|
}
|
|
172
|
-
RemoteDataLoadingEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RemoteDataLoadingEffect, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
184
|
+
RemoteDataLoadingEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RemoteDataLoadingEffect, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }, { token: i1$1.NgssmNotifierService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
173
185
|
RemoteDataLoadingEffect.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RemoteDataLoadingEffect });
|
|
174
186
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RemoteDataLoadingEffect, decorators: [{
|
|
175
187
|
type: Injectable
|
|
@@ -178,7 +190,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
|
|
|
178
190
|
args: [NGSSM_REMOTE_DATA_PROVIDER]
|
|
179
191
|
}, {
|
|
180
192
|
type: Optional
|
|
181
|
-
}] }]; } });
|
|
193
|
+
}] }, { type: i1$1.NgssmNotifierService }]; } });
|
|
182
194
|
const remoteDataLoadingEffectProvider = {
|
|
183
195
|
provide: NGSSM_EFFECT,
|
|
184
196
|
useClass: RemoteDataLoadingEffect,
|
|
@@ -197,6 +209,7 @@ class RemoteDataReducer {
|
|
|
197
209
|
const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];
|
|
198
210
|
const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);
|
|
199
211
|
if (!provider ||
|
|
212
|
+
!provider.cacheDurationInSeconds ||
|
|
200
213
|
loadRemoteDataAction.forceReload ||
|
|
201
214
|
item.status === DataStatus.none ||
|
|
202
215
|
item.status === DataStatus.error ||
|
|
@@ -217,7 +230,8 @@ class RemoteDataReducer {
|
|
|
217
230
|
status: { $set: registerLoadedRemoteDataAction.status },
|
|
218
231
|
data: { $set: registerLoadedRemoteDataAction.data },
|
|
219
232
|
timestamp: { $set: new Date() },
|
|
220
|
-
message: { $set: registerLoadedRemoteDataAction.message }
|
|
233
|
+
message: { $set: registerLoadedRemoteDataAction.message },
|
|
234
|
+
error: { $set: registerLoadedRemoteDataAction.remoteCallError }
|
|
221
235
|
}
|
|
222
236
|
});
|
|
223
237
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngssm-remote-data.mjs","sources":["../../../projects/ngssm-remote-data/src/lib/model/data-status.ts","../../../projects/ngssm-remote-data/src/lib/model/remote-data.ts","../../../projects/ngssm-remote-data/src/lib/model/remote-call-status.ts","../../../projects/ngssm-remote-data/src/lib/state/remote-data.state.ts","../../../projects/ngssm-remote-data/src/lib/state/selectors.ts","../../../projects/ngssm-remote-data/src/lib/actions/remote-data-action-type.ts","../../../projects/ngssm-remote-data/src/lib/actions/load-remote-data.action.ts","../../../projects/ngssm-remote-data/src/lib/actions/register-loaded-remote-data.action.ts","../../../projects/ngssm-remote-data/src/lib/remote-data-provider.ts","../../../projects/ngssm-remote-data/src/lib/guards/remote-data-loading.guard.ts","../../../projects/ngssm-remote-data/src/lib/components/ngssm-remote-data-reload-button/ngssm-remote-data-reload-button.component.ts","../../../projects/ngssm-remote-data/src/lib/components/ngssm-remote-data-reload-button/ngssm-remote-data-reload-button.component.html","../../../projects/ngssm-remote-data/src/lib/effects/remote-data-loading.effect.ts","../../../projects/ngssm-remote-data/src/lib/reducers/remote-data.reducer.ts","../../../projects/ngssm-remote-data/src/lib/remote-data-state-initializer.ts","../../../projects/ngssm-remote-data/src/lib/provide-ngssm-remote-data.ts","../../../projects/ngssm-remote-data/src/public-api.ts","../../../projects/ngssm-remote-data/src/ngssm-remote-data.ts"],"sourcesContent":["export enum DataStatus {\n none = 'None',\n loading = 'Loading',\n loaded = 'Loaded',\n notFound = 'NotFound',\n error = 'Error'\n}\n","import { DataStatus } from './data-status';\n\nexport interface RemoteData<T> {\n status: DataStatus;\n data?: T;\n timestamp?: Date;\n message?: string;\n}\n\nexport const getDefaultRemoteData = <T>(defaultValue?: T): RemoteData<T> => ({\n status: DataStatus.none,\n data: defaultValue\n});\n","export enum RemoteCallStatus {\n none = 'None',\n inProgress = 'In progress',\n done = 'Done',\n ko = 'Ko'\n}\n","import update, { Spec } from 'immutability-helper';\n\nimport { NgSsmFeatureState, State } from 'ngssm-store';\n\nimport { RemoteData } from '../model';\n\nexport const selectRemoteDataState = (state: State): RemoteDataState =>\n state[RemoteDataStateSpecification.featureStateKey] as RemoteDataState;\n\nexport const updateRemoteDataState = (state: State, command: Spec<RemoteDataState, never>): State =>\n update(state, {\n [RemoteDataStateSpecification.featureStateKey]: command\n });\n\nexport interface RemoteDataState {\n [key: string]: RemoteData<any>;\n}\n\n@NgSsmFeatureState({\n featureStateKey: RemoteDataStateSpecification.featureStateKey,\n initialState: RemoteDataStateSpecification.initialState\n})\nexport class RemoteDataStateSpecification {\n public static readonly featureStateKey = 'remote-data-state';\n public static readonly initialState: RemoteDataState = {};\n}\n","import { State } from 'ngssm-store';\n\nimport { selectRemoteDataState } from './remote-data.state';\n\nexport const selectRemoteData = (state: State, remoteDataKey: string) => selectRemoteDataState(state)[remoteDataKey];\n","export enum RemoteDataActionType {\n loadRemoteData = '[RemoteDataActionType] loadRemoteData',\n registerLoadedRemoteData = '[RemoteDataActionType] registerLoadedRemoteData'\n}\n","import { Action } from 'ngssm-store';\n\nimport { RemoteDataActionType } from './remote-data-action-type';\n\nexport class LoadRemoteDataAction implements Action {\n public readonly type: string = RemoteDataActionType.loadRemoteData;\n\n constructor(public readonly remoteDataKey: string, public readonly forceReload: boolean) {}\n}\n","import { Action } from 'ngssm-store';\n\nimport { DataStatus } from '../model';\nimport { RemoteDataActionType } from './remote-data-action-type';\n\nexport class RegisterLoadedRemoteDataAction implements Action {\n public readonly type: string = RemoteDataActionType.registerLoadedRemoteData;\n\n constructor(\n public readonly remoteDataKey: string,\n public readonly status: DataStatus,\n public readonly data: any,\n public readonly message?: string\n ) {}\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport interface RemoteDataProvider {\n readonly remoteDataKey: string;\n readonly cacheDurationInSeconds: number;\n\n get(): Observable<any>;\n}\n\nexport const NGSSM_REMOTE_DATA_PROVIDER = new InjectionToken<RemoteDataProvider>('NGSSM_REMOTE_DATA_PROVIDER');\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nimport { Store } from 'ngssm-store';\n\nimport { LoadRemoteDataAction } from '../actions';\n\nexport interface RemoteDataLoadingGuardItem {\n remoteDataKey: string;\n forceReload?: boolean;\n}\n\nexport interface RemoteDataLoadingGuardParameters {\n remoteDataItems: RemoteDataLoadingGuardItem[];\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RemoteDataLoadingGuard implements CanActivate {\n constructor(private store: Store) {}\n\n public canActivate(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n const parameters = route.data as RemoteDataLoadingGuardParameters;\n (parameters?.remoteDataItems ?? []).forEach((item) => {\n this.store.dispatchAction(new LoadRemoteDataAction(item.remoteDataKey, item.forceReload === true));\n });\n\n return true;\n }\n}\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\n\nimport { NgSsmComponent, Store } from 'ngssm-store';\n\nimport { LoadRemoteDataAction } from '../../actions';\nimport { selectRemoteDataState } from '../../state';\nimport { DataStatus } from '../../model';\n\nconst datePipe = new DatePipe('en-US');\n\n@Component({\n selector: 'ngssm-remote-data-reload-button',\n standalone: true,\n imports: [CommonModule, MatIconModule, MatButtonModule, MatTooltipModule],\n templateUrl: './ngssm-remote-data-reload-button.component.html',\n styleUrls: ['./ngssm-remote-data-reload-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmRemoteDataReloadButtonComponent extends NgSsmComponent {\n private readonly _remoteDataKey$ = new BehaviorSubject<string>('');\n private readonly _tooltipMessage$ = new BehaviorSubject<string>('');\n private readonly _disabled$ = new BehaviorSubject<boolean>(false);\n\n @Input() actionTypes: string[] = [];\n\n constructor(store: Store) {\n super(store);\n combineLatest([this.watch((s) => selectRemoteDataState(s)), this._remoteDataKey$]).subscribe((values) => {\n let tooltiMessage = 'Reload data.';\n let disabled = true;\n if (values[1]) {\n const timestamp = values[0][values[1]]?.timestamp;\n if (timestamp) {\n tooltiMessage = [tooltiMessage, `Loaded at ${datePipe.transform(timestamp, 'mediumTime')}`].join('\\n');\n }\n\n disabled = (values[0][values[1]]?.status ?? DataStatus.loading) === DataStatus.loading;\n }\n\n this._tooltipMessage$.next(tooltiMessage);\n this._disabled$.next(disabled);\n });\n }\n\n @Input() set remoteDataKey(value: string) {\n this._remoteDataKey$.next(value);\n }\n\n public get tooltipMessage$(): Observable<string> {\n return this._tooltipMessage$.asObservable();\n }\n\n public get disabled$(): Observable<boolean> {\n return this._disabled$.asObservable();\n }\n\n public reload(): void {\n this.dispatchAction(new LoadRemoteDataAction(this._remoteDataKey$.getValue(), true));\n\n (this.actionTypes ?? []).forEach((type) => this.dispatchActionType(type));\n }\n}\n","<button mat-icon-button color=\"primary\" (click)=\"reload()\" [matTooltip]=\"(tooltipMessage$ | async) ?? 'Reload'\"\n [disabled]=\"disabled$ | async\">\n <mat-icon class=\"fa-solid fa-rotate-right\"></mat-icon>\n</button>","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Effect, Store, State, Action, NGSSM_EFFECT } from 'ngssm-store';\n\nimport { LoadRemoteDataAction, RegisterLoadedRemoteDataAction, RemoteDataActionType } from '../actions';\nimport { DataStatus } from '../model';\nimport { RemoteDataProvider, NGSSM_REMOTE_DATA_PROVIDER } from '../remote-data-provider';\nimport { selectRemoteDataState } from '../state';\n\n@Injectable()\nexport class RemoteDataLoadingEffect implements Effect {\n private readonly remoteDataProvidersPerKey: Map<string, RemoteDataProvider>;\n\n public readonly processedActions: string[] = [RemoteDataActionType.loadRemoteData];\n\n constructor(@Inject(NGSSM_REMOTE_DATA_PROVIDER) @Optional() remoteDataProviders: RemoteDataProvider[]) {\n this.remoteDataProvidersPerKey = new Map<string, RemoteDataProvider>((remoteDataProviders ?? []).map((r) => [r.remoteDataKey, r]));\n }\n\n public processAction(store: Store, state: State, action: Action): void {\n const loadRemoteDataAction = action as LoadRemoteDataAction;\n const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];\n const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);\n\n if (!item || !provider || item.status !== DataStatus.loading) {\n return;\n }\n\n provider.get().subscribe({\n next: (value) =>\n store.dispatchAction(new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.loaded, value)),\n error: (error) => {\n console.error(`Unable to load data for '${loadRemoteDataAction.remoteDataKey}'`, error);\n store.dispatchAction(new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.error, undefined));\n }\n });\n }\n}\n\nexport const remoteDataLoadingEffectProvider: Provider = {\n provide: NGSSM_EFFECT,\n useClass: RemoteDataLoadingEffect,\n multi: true\n};\n","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Reducer, State, NGSSM_REDUCER, Action } from 'ngssm-store';\n\nimport { LoadRemoteDataAction, RegisterLoadedRemoteDataAction, RemoteDataActionType } from '../actions';\nimport { DataStatus } from '../model';\nimport { RemoteDataProvider, NGSSM_REMOTE_DATA_PROVIDER } from '../remote-data-provider';\nimport { selectRemoteDataState, updateRemoteDataState } from '../state';\n\n@Injectable()\nexport class RemoteDataReducer implements Reducer {\n private readonly remoteDataProvidersPerKey: Map<string, RemoteDataProvider>;\n\n public readonly processedActions: string[] = [RemoteDataActionType.loadRemoteData, RemoteDataActionType.registerLoadedRemoteData];\n\n constructor(@Inject(NGSSM_REMOTE_DATA_PROVIDER) @Optional() remoteDataProviders: RemoteDataProvider[]) {\n this.remoteDataProvidersPerKey = new Map<string, RemoteDataProvider>((remoteDataProviders ?? []).map((r) => [r.remoteDataKey, r]));\n }\n\n public updateState(state: State, action: Action): State {\n switch (action.type) {\n case RemoteDataActionType.loadRemoteData:\n const loadRemoteDataAction = action as LoadRemoteDataAction;\n const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];\n const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);\n\n if (\n !provider ||\n loadRemoteDataAction.forceReload ||\n item.status === DataStatus.none ||\n item.status === DataStatus.error ||\n !item.timestamp ||\n new Date().getTime() - item.timestamp.getTime() >= 1000 * provider.cacheDurationInSeconds\n ) {\n return updateRemoteDataState(state, {\n [loadRemoteDataAction.remoteDataKey]: {\n status: { $set: DataStatus.loading }\n }\n });\n }\n\n break;\n\n case RemoteDataActionType.registerLoadedRemoteData:\n const registerLoadedRemoteDataAction = action as RegisterLoadedRemoteDataAction;\n if (this.remoteDataProvidersPerKey.has(registerLoadedRemoteDataAction.remoteDataKey)) {\n return updateRemoteDataState(state, {\n [registerLoadedRemoteDataAction.remoteDataKey]: {\n status: { $set: registerLoadedRemoteDataAction.status },\n data: { $set: registerLoadedRemoteDataAction.data },\n timestamp: { $set: new Date() },\n message: { $set: registerLoadedRemoteDataAction.message }\n }\n });\n }\n\n break;\n }\n\n return state;\n }\n}\n\nexport const remoteDataReducerProvider: Provider = {\n provide: NGSSM_REDUCER,\n useClass: RemoteDataReducer,\n multi: true\n};\n","import { Inject, Injectable, Optional } from '@angular/core';\n\nimport { State, StateInitializer } from 'ngssm-store';\n\nimport { DataStatus } from './model';\nimport { RemoteDataProvider, NGSSM_REMOTE_DATA_PROVIDER } from './remote-data-provider';\nimport { updateRemoteDataState } from './state';\n\n@Injectable()\nexport class RemoteDataStateInitializer implements StateInitializer {\n constructor(@Inject(NGSSM_REMOTE_DATA_PROVIDER) @Optional() private remoteDataProviders: RemoteDataProvider[]) {}\n\n public initializeState(state: State): State {\n let tempState = state;\n return (this.remoteDataProviders ?? []).reduce(\n (s, provider) => updateRemoteDataState(s, { [provider.remoteDataKey]: { $set: { status: DataStatus.none } } }),\n tempState\n );\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\n\nimport { NGSSM_STATE_INITIALIZER } from 'ngssm-store';\n\nimport { remoteDataLoadingEffectProvider } from './effects/remote-data-loading.effect';\nimport { remoteDataReducerProvider } from './reducers/remote-data.reducer';\nimport { RemoteDataStateInitializer } from './remote-data-state-initializer';\n\nexport const provideNgssmRemoteData = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n remoteDataReducerProvider,\n remoteDataLoadingEffectProvider,\n { provide: NGSSM_STATE_INITIALIZER, useClass: RemoteDataStateInitializer, multi: true }\n ]);\n};\n","/*\n * Public API Surface of ngssm-remote-data\n */\n\nexport * from './lib/model';\nexport * from './lib/state';\nexport * from './lib/actions';\nexport * from './lib/remote-data-provider';\nexport * from './lib/guards';\nexport * from './lib/components/ngssm-remote-data-reload-button/ngssm-remote-data-reload-button.component';\nexport * from './lib/provide-ngssm-remote-data';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngssm-remote-data.mjs","sources":["../../../projects/ngssm-remote-data/src/lib/model/data-status.ts","../../../projects/ngssm-remote-data/src/lib/model/remote-data.ts","../../../projects/ngssm-remote-data/src/lib/model/remote-call-status.ts","../../../projects/ngssm-remote-data/src/lib/model/remote-data-provider.ts","../../../projects/ngssm-remote-data/src/lib/state/remote-data.state.ts","../../../projects/ngssm-remote-data/src/lib/state/selectors.ts","../../../projects/ngssm-remote-data/src/lib/actions/remote-data-action-type.ts","../../../projects/ngssm-remote-data/src/lib/actions/load-remote-data.action.ts","../../../projects/ngssm-remote-data/src/lib/actions/register-loaded-remote-data.action.ts","../../../projects/ngssm-remote-data/src/lib/guards/remote-data-loading.guard.ts","../../../projects/ngssm-remote-data/src/lib/components/ngssm-remote-data-reload-button/ngssm-remote-data-reload-button.component.ts","../../../projects/ngssm-remote-data/src/lib/components/ngssm-remote-data-reload-button/ngssm-remote-data-reload-button.component.html","../../../projects/ngssm-remote-data/src/lib/effects/remote-data-loading.effect.ts","../../../projects/ngssm-remote-data/src/lib/reducers/remote-data.reducer.ts","../../../projects/ngssm-remote-data/src/lib/remote-data-state-initializer.ts","../../../projects/ngssm-remote-data/src/lib/provide-ngssm-remote-data.ts","../../../projects/ngssm-remote-data/src/public-api.ts","../../../projects/ngssm-remote-data/src/ngssm-remote-data.ts"],"sourcesContent":["export enum DataStatus {\n none = 'None',\n loading = 'Loading',\n loaded = 'Loaded',\n notFound = 'NotFound',\n error = 'Error'\n}\n","import { DataStatus } from './data-status';\nimport { RemoteCallError } from './remote-call-error';\n\nexport interface RemoteData<T> {\n status: DataStatus;\n data?: T;\n timestamp?: Date;\n message?: string;\n error?: RemoteCallError;\n}\n\nexport const getDefaultRemoteData = <T>(defaultValue?: T): RemoteData<T> => ({\n status: DataStatus.none,\n data: defaultValue\n});\n","export enum RemoteCallStatus {\n none = 'None',\n inProgress = 'In progress',\n done = 'Done',\n ko = 'Ko'\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { RemoteDataGetterParams } from './remote-data-getter-params';\n\nexport interface RemoteDataProvider<TData = any, TValue = any> {\n readonly remoteDataKey: string;\n readonly cacheDurationInSeconds?: number;\n\n get(params?: RemoteDataGetterParams<TValue>): Observable<TData>;\n}\n\nexport const NGSSM_REMOTE_DATA_PROVIDER = new InjectionToken<RemoteDataProvider>('NGSSM_REMOTE_DATA_PROVIDER');\n","import update, { Spec } from 'immutability-helper';\n\nimport { NgSsmFeatureState, State } from 'ngssm-store';\n\nimport { RemoteData } from '../model';\n\nexport const selectRemoteDataState = (state: State): RemoteDataState =>\n state[RemoteDataStateSpecification.featureStateKey] as RemoteDataState;\n\nexport const updateRemoteDataState = (state: State, command: Spec<RemoteDataState, never>): State =>\n update(state, {\n [RemoteDataStateSpecification.featureStateKey]: command\n });\n\nexport interface RemoteDataState {\n [key: string]: RemoteData<any>;\n}\n\n@NgSsmFeatureState({\n featureStateKey: RemoteDataStateSpecification.featureStateKey,\n initialState: RemoteDataStateSpecification.initialState\n})\nexport class RemoteDataStateSpecification {\n public static readonly featureStateKey = 'remote-data-state';\n public static readonly initialState: RemoteDataState = {};\n}\n","import { State } from 'ngssm-store';\n\nimport { selectRemoteDataState } from './remote-data.state';\n\nexport const selectRemoteData = (state: State, remoteDataKey: string) => selectRemoteDataState(state)[remoteDataKey];\n","export enum RemoteDataActionType {\n loadRemoteData = '[RemoteDataActionType] loadRemoteData',\n registerLoadedRemoteData = '[RemoteDataActionType] registerLoadedRemoteData'\n}\n","import { Action } from 'ngssm-store';\n\nimport { RemoteDataGetterParams } from '../model';\nimport { RemoteDataActionType } from './remote-data-action-type';\n\nexport class LoadRemoteDataAction<TValue = any> implements Action {\n public readonly type: string = RemoteDataActionType.loadRemoteData;\n\n constructor(\n public readonly remoteDataKey: string,\n public readonly forceReload: boolean,\n public readonly params?: RemoteDataGetterParams<TValue>\n ) {}\n}\n","import { Action } from 'ngssm-store';\n\nimport { DataStatus, RemoteCallError } from '../model';\nimport { RemoteDataActionType } from './remote-data-action-type';\n\nexport class RegisterLoadedRemoteDataAction implements Action {\n public readonly type: string = RemoteDataActionType.registerLoadedRemoteData;\n\n constructor(\n public readonly remoteDataKey: string,\n public readonly status: DataStatus,\n public readonly data: any,\n public readonly message?: string,\n public readonly remoteCallError?: RemoteCallError\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nimport { Store } from 'ngssm-store';\n\nimport { LoadRemoteDataAction } from '../actions';\n\nexport interface RemoteDataLoadingGuardItem {\n remoteDataKey: string;\n forceReload?: boolean;\n}\n\nexport interface RemoteDataLoadingGuardParameters {\n remoteDataItems: RemoteDataLoadingGuardItem[];\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RemoteDataLoadingGuard implements CanActivate {\n constructor(private store: Store) {}\n\n public canActivate(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n const parameters = route.data as RemoteDataLoadingGuardParameters;\n (parameters?.remoteDataItems ?? []).forEach((item) => {\n this.store.dispatchAction(new LoadRemoteDataAction(item.remoteDataKey, item.forceReload === true));\n });\n\n return true;\n }\n}\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\n\nimport { NgSsmComponent, Store } from 'ngssm-store';\n\nimport { LoadRemoteDataAction } from '../../actions';\nimport { selectRemoteDataState } from '../../state';\nimport { DataStatus } from '../../model';\n\nconst datePipe = new DatePipe('en-US');\n\n@Component({\n selector: 'ngssm-remote-data-reload-button',\n standalone: true,\n imports: [CommonModule, MatIconModule, MatButtonModule, MatTooltipModule],\n templateUrl: './ngssm-remote-data-reload-button.component.html',\n styleUrls: ['./ngssm-remote-data-reload-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmRemoteDataReloadButtonComponent extends NgSsmComponent {\n private readonly _remoteDataKey$ = new BehaviorSubject<string>('');\n private readonly _tooltipMessage$ = new BehaviorSubject<string>('');\n private readonly _disabled$ = new BehaviorSubject<boolean>(false);\n\n @Input() actionTypes: string[] = [];\n\n constructor(store: Store) {\n super(store);\n combineLatest([this.watch((s) => selectRemoteDataState(s)), this._remoteDataKey$]).subscribe((values) => {\n let tooltiMessage = 'Reload data.';\n let disabled = true;\n if (values[1]) {\n const timestamp = values[0][values[1]]?.timestamp;\n if (timestamp) {\n tooltiMessage = [tooltiMessage, `Loaded at ${datePipe.transform(timestamp, 'mediumTime')}`].join('\\n');\n }\n\n disabled = (values[0][values[1]]?.status ?? DataStatus.loading) === DataStatus.loading;\n }\n\n this._tooltipMessage$.next(tooltiMessage);\n this._disabled$.next(disabled);\n });\n }\n\n @Input() set remoteDataKey(value: string) {\n this._remoteDataKey$.next(value);\n }\n\n public get tooltipMessage$(): Observable<string> {\n return this._tooltipMessage$.asObservable();\n }\n\n public get disabled$(): Observable<boolean> {\n return this._disabled$.asObservable();\n }\n\n public reload(): void {\n this.dispatchAction(new LoadRemoteDataAction(this._remoteDataKey$.getValue(), true));\n\n (this.actionTypes ?? []).forEach((type) => this.dispatchActionType(type));\n }\n}\n","<button mat-icon-button color=\"primary\" (click)=\"reload()\" [matTooltip]=\"(tooltipMessage$ | async) ?? 'Reload'\"\n [disabled]=\"disabled$ | async\">\n <mat-icon class=\"fa-solid fa-rotate-right\"></mat-icon>\n</button>","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Effect, Store, State, Action, NGSSM_EFFECT } from 'ngssm-store';\nimport { NgssmNotifierService } from 'ngssm-toolkit';\n\nimport { LoadRemoteDataAction, RegisterLoadedRemoteDataAction, RemoteDataActionType } from '../actions';\nimport { DataStatus, RemoteDataProvider, NGSSM_REMOTE_DATA_PROVIDER } from '../model';\nimport { selectRemoteDataState } from '../state';\n\n@Injectable()\nexport class RemoteDataLoadingEffect implements Effect {\n private readonly remoteDataProvidersPerKey: Map<string, RemoteDataProvider>;\n\n public readonly processedActions: string[] = [RemoteDataActionType.loadRemoteData];\n\n constructor(\n @Inject(NGSSM_REMOTE_DATA_PROVIDER) @Optional() remoteDataProviders: RemoteDataProvider[],\n private notifierService: NgssmNotifierService\n ) {\n this.remoteDataProvidersPerKey = new Map<string, RemoteDataProvider>((remoteDataProviders ?? []).map((r) => [r.remoteDataKey, r]));\n }\n\n public processAction(store: Store, state: State, action: Action): void {\n const loadRemoteDataAction = action as LoadRemoteDataAction;\n const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];\n const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);\n\n if (!item || !provider || item.status !== DataStatus.loading) {\n return;\n }\n\n provider.get(loadRemoteDataAction.params).subscribe({\n next: (value) => {\n store.dispatchAction(new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.loaded, value));\n if (loadRemoteDataAction.params?.callbackAction) {\n store.dispatchActionType(loadRemoteDataAction.params.callbackAction);\n }\n },\n error: (error) => {\n console.error(`Unable to load data for '${loadRemoteDataAction.remoteDataKey}'`, error);\n if (loadRemoteDataAction.params?.errorNotificationMessage) {\n this.notifierService.notifyError(loadRemoteDataAction.params.errorNotificationMessage(error?.error));\n }\n\n store.dispatchAction(\n new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.error, undefined, error?.error)\n );\n }\n });\n }\n}\n\nexport const remoteDataLoadingEffectProvider: Provider = {\n provide: NGSSM_EFFECT,\n useClass: RemoteDataLoadingEffect,\n multi: true\n};\n","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Reducer, State, NGSSM_REDUCER, Action } from 'ngssm-store';\n\nimport { LoadRemoteDataAction, RegisterLoadedRemoteDataAction, RemoteDataActionType } from '../actions';\nimport { DataStatus, RemoteDataProvider, NGSSM_REMOTE_DATA_PROVIDER } from '../model';\nimport { selectRemoteDataState, updateRemoteDataState } from '../state';\n\n@Injectable()\nexport class RemoteDataReducer implements Reducer {\n private readonly remoteDataProvidersPerKey: Map<string, RemoteDataProvider>;\n\n public readonly processedActions: string[] = [RemoteDataActionType.loadRemoteData, RemoteDataActionType.registerLoadedRemoteData];\n\n constructor(@Inject(NGSSM_REMOTE_DATA_PROVIDER) @Optional() remoteDataProviders: RemoteDataProvider[]) {\n this.remoteDataProvidersPerKey = new Map<string, RemoteDataProvider>((remoteDataProviders ?? []).map((r) => [r.remoteDataKey, r]));\n }\n\n public updateState(state: State, action: Action): State {\n switch (action.type) {\n case RemoteDataActionType.loadRemoteData:\n const loadRemoteDataAction = action as LoadRemoteDataAction;\n const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];\n const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);\n\n if (\n !provider ||\n !provider.cacheDurationInSeconds ||\n loadRemoteDataAction.forceReload ||\n item.status === DataStatus.none ||\n item.status === DataStatus.error ||\n !item.timestamp ||\n new Date().getTime() - item.timestamp.getTime() >= 1000 * provider.cacheDurationInSeconds\n ) {\n return updateRemoteDataState(state, {\n [loadRemoteDataAction.remoteDataKey]: {\n status: { $set: DataStatus.loading }\n }\n });\n }\n\n break;\n\n case RemoteDataActionType.registerLoadedRemoteData:\n const registerLoadedRemoteDataAction = action as RegisterLoadedRemoteDataAction;\n if (this.remoteDataProvidersPerKey.has(registerLoadedRemoteDataAction.remoteDataKey)) {\n return updateRemoteDataState(state, {\n [registerLoadedRemoteDataAction.remoteDataKey]: {\n status: { $set: registerLoadedRemoteDataAction.status },\n data: { $set: registerLoadedRemoteDataAction.data },\n timestamp: { $set: new Date() },\n message: { $set: registerLoadedRemoteDataAction.message },\n error: { $set: registerLoadedRemoteDataAction.remoteCallError }\n }\n });\n }\n\n break;\n }\n\n return state;\n }\n}\n\nexport const remoteDataReducerProvider: Provider = {\n provide: NGSSM_REDUCER,\n useClass: RemoteDataReducer,\n multi: true\n};\n","import { Inject, Injectable, Optional } from '@angular/core';\n\nimport { State, StateInitializer } from 'ngssm-store';\n\nimport { DataStatus, RemoteDataProvider, NGSSM_REMOTE_DATA_PROVIDER } from './model';\nimport { updateRemoteDataState } from './state';\n\n@Injectable()\nexport class RemoteDataStateInitializer implements StateInitializer {\n constructor(@Inject(NGSSM_REMOTE_DATA_PROVIDER) @Optional() private remoteDataProviders: RemoteDataProvider[]) {}\n\n public initializeState(state: State): State {\n let tempState = state;\n return (this.remoteDataProviders ?? []).reduce(\n (s, provider) => updateRemoteDataState(s, { [provider.remoteDataKey]: { $set: { status: DataStatus.none } } }),\n tempState\n );\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\n\nimport { NGSSM_STATE_INITIALIZER } from 'ngssm-store';\n\nimport { remoteDataLoadingEffectProvider } from './effects/remote-data-loading.effect';\nimport { remoteDataReducerProvider } from './reducers/remote-data.reducer';\nimport { RemoteDataStateInitializer } from './remote-data-state-initializer';\n\nexport const provideNgssmRemoteData = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n remoteDataReducerProvider,\n remoteDataLoadingEffectProvider,\n { provide: NGSSM_STATE_INITIALIZER, useClass: RemoteDataStateInitializer, multi: true }\n ]);\n};\n","/*\n * Public API Surface of ngssm-remote-data\n */\n\nexport * from './lib/model';\nexport * from './lib/state';\nexport * from './lib/actions';\nexport * from './lib/guards';\nexport * from './lib/components/ngssm-remote-data-reload-button/ngssm-remote-data-reload-button.component';\nexport * from './lib/provide-ngssm-remote-data';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Action } from 'ngssm-store';
|
|
2
|
-
|
|
2
|
+
import { RemoteDataGetterParams } from '../model';
|
|
3
|
+
export declare class LoadRemoteDataAction<TValue = any> implements Action {
|
|
3
4
|
readonly remoteDataKey: string;
|
|
4
5
|
readonly forceReload: boolean;
|
|
6
|
+
readonly params?: RemoteDataGetterParams<TValue> | undefined;
|
|
5
7
|
readonly type: string;
|
|
6
|
-
constructor(remoteDataKey: string, forceReload: boolean);
|
|
8
|
+
constructor(remoteDataKey: string, forceReload: boolean, params?: RemoteDataGetterParams<TValue> | undefined);
|
|
7
9
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { Action } from 'ngssm-store';
|
|
2
|
-
import { DataStatus } from '../model';
|
|
2
|
+
import { DataStatus, RemoteCallError } from '../model';
|
|
3
3
|
export declare class RegisterLoadedRemoteDataAction implements Action {
|
|
4
4
|
readonly remoteDataKey: string;
|
|
5
5
|
readonly status: DataStatus;
|
|
6
6
|
readonly data: any;
|
|
7
7
|
readonly message?: string | undefined;
|
|
8
|
+
readonly remoteCallError?: RemoteCallError | undefined;
|
|
8
9
|
readonly type: string;
|
|
9
|
-
constructor(remoteDataKey: string, status: DataStatus, data: any, message?: string | undefined);
|
|
10
|
+
constructor(remoteDataKey: string, status: DataStatus, data: any, message?: string | undefined, remoteCallError?: RemoteCallError | undefined);
|
|
10
11
|
}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { Provider } from '@angular/core';
|
|
2
2
|
import { Effect, Store, State, Action } from 'ngssm-store';
|
|
3
|
-
import {
|
|
3
|
+
import { NgssmNotifierService } from 'ngssm-toolkit';
|
|
4
|
+
import { RemoteDataProvider } from '../model';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export declare class RemoteDataLoadingEffect implements Effect {
|
|
7
|
+
private notifierService;
|
|
6
8
|
private readonly remoteDataProvidersPerKey;
|
|
7
9
|
readonly processedActions: string[];
|
|
8
|
-
constructor(remoteDataProviders: RemoteDataProvider[]);
|
|
10
|
+
constructor(remoteDataProviders: RemoteDataProvider[], notifierService: NgssmNotifierService);
|
|
9
11
|
processAction(store: Store, state: State, action: Action): void;
|
|
10
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<RemoteDataLoadingEffect, [{ optional: true; }]>;
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RemoteDataLoadingEffect, [{ optional: true; }, null]>;
|
|
11
13
|
static ɵprov: i0.ɵɵInjectableDeclaration<RemoteDataLoadingEffect>;
|
|
12
14
|
}
|
|
13
15
|
export declare const remoteDataLoadingEffectProvider: Provider;
|
package/lib/model/index.d.ts
CHANGED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { RemoteDataGetterParams } from './remote-data-getter-params';
|
|
4
|
+
export interface RemoteDataProvider<TData = any, TValue = any> {
|
|
5
|
+
readonly remoteDataKey: string;
|
|
6
|
+
readonly cacheDurationInSeconds?: number;
|
|
7
|
+
get(params?: RemoteDataGetterParams<TValue>): Observable<TData>;
|
|
8
|
+
}
|
|
9
|
+
export declare const NGSSM_REMOTE_DATA_PROVIDER: InjectionToken<RemoteDataProvider<any, any>>;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { DataStatus } from './data-status';
|
|
2
|
+
import { RemoteCallError } from './remote-call-error';
|
|
2
3
|
export interface RemoteData<T> {
|
|
3
4
|
status: DataStatus;
|
|
4
5
|
data?: T;
|
|
5
6
|
timestamp?: Date;
|
|
6
7
|
message?: string;
|
|
8
|
+
error?: RemoteCallError;
|
|
7
9
|
}
|
|
8
10
|
export declare const getDefaultRemoteData: <T>(defaultValue?: T | undefined) => RemoteData<T>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Provider } from '@angular/core';
|
|
2
2
|
import { Reducer, State, Action } from 'ngssm-store';
|
|
3
|
-
import { RemoteDataProvider } from '../
|
|
3
|
+
import { RemoteDataProvider } from '../model';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class RemoteDataReducer implements Reducer {
|
|
6
6
|
private readonly remoteDataProvidersPerKey;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { State, StateInitializer } from 'ngssm-store';
|
|
2
|
-
import { RemoteDataProvider } from './
|
|
2
|
+
import { RemoteDataProvider } from './model';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class RemoteDataStateInitializer implements StateInitializer {
|
|
5
5
|
private remoteDataProviders;
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ngssm-remote-data",
|
|
3
|
-
"version": "15.2.
|
|
3
|
+
"version": "15.2.7",
|
|
4
4
|
"description": "NgSsm - Utilities to manage data loaded from remote services with the store.",
|
|
5
5
|
"author": "Lion Marc",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"peerDependencies": {
|
|
8
8
|
"@angular/common": ">15.0.0",
|
|
9
9
|
"@angular/core": ">=15.0.0",
|
|
10
|
-
"ngssm-store": "15.2.
|
|
10
|
+
"ngssm-store": "15.2.7"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"tslib": "^2.3.0"
|
package/public-api.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export * from './lib/model';
|
|
2
2
|
export * from './lib/state';
|
|
3
3
|
export * from './lib/actions';
|
|
4
|
-
export * from './lib/remote-data-provider';
|
|
5
4
|
export * from './lib/guards';
|
|
6
5
|
export * from './lib/components/ngssm-remote-data-reload-button/ngssm-remote-data-reload-button.component';
|
|
7
6
|
export * from './lib/provide-ngssm-remote-data';
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
export const NGSSM_REMOTE_DATA_PROVIDER = new InjectionToken('NGSSM_REMOTE_DATA_PROVIDER');
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWRhdGEtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1yZW1vdGUtZGF0YS9zcmMvbGliL3JlbW90ZS1kYXRhLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVL0MsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxjQUFjLENBQXFCLDRCQUE0QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlbW90ZURhdGFQcm92aWRlciB7XG4gIHJlYWRvbmx5IHJlbW90ZURhdGFLZXk6IHN0cmluZztcbiAgcmVhZG9ubHkgY2FjaGVEdXJhdGlvbkluU2Vjb25kczogbnVtYmVyO1xuXG4gIGdldCgpOiBPYnNlcnZhYmxlPGFueT47XG59XG5cbmV4cG9ydCBjb25zdCBOR1NTTV9SRU1PVEVfREFUQV9QUk9WSURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSZW1vdGVEYXRhUHJvdmlkZXI+KCdOR1NTTV9SRU1PVEVfREFUQV9QUk9WSURFUicpO1xuIl19
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
export interface RemoteDataProvider {
|
|
4
|
-
readonly remoteDataKey: string;
|
|
5
|
-
readonly cacheDurationInSeconds: number;
|
|
6
|
-
get(): Observable<any>;
|
|
7
|
-
}
|
|
8
|
-
export declare const NGSSM_REMOTE_DATA_PROVIDER: InjectionToken<RemoteDataProvider>;
|