ngx-histaff-alpha 1.1.1 → 1.1.3
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.
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { concat, interval } from 'rxjs';
|
|
3
|
+
import { filter, first } from 'rxjs/operators';
|
|
3
4
|
import { alertOptions, noneAutoClosedAlertOptions } from '../constants/alertOptions';
|
|
4
5
|
import { EnumTranslateKey } from 'alpha-global-constants';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
@@ -8,38 +9,37 @@ import * as i2 from "../libraries/alert/alert.service";
|
|
|
8
9
|
import * as i3 from "./dialog.service";
|
|
9
10
|
export class CheckForUpdateService {
|
|
10
11
|
constructor(appRef, swUpdate, alertService, dialogService) {
|
|
11
|
-
this.swUpdate = swUpdate;
|
|
12
|
-
this.alertService = alertService;
|
|
13
|
-
this.dialogService = dialogService;
|
|
14
12
|
this.subscriptions = [];
|
|
15
13
|
this.pendingAction = '';
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
// Allow the app to stabilize first, before starting
|
|
15
|
+
// polling for updates with `interval()`.
|
|
16
|
+
const appIsStable$ = appRef.isStable.pipe(first(isStable => isStable === true));
|
|
17
|
+
const everySixHours$ = interval(6 * 60 * 60 * 1000);
|
|
18
|
+
const everySixHoursOnceAppIsStable$ = concat(appIsStable$, everySixHours$);
|
|
19
|
+
everySixHoursOnceAppIsStable$.subscribe(async () => {
|
|
20
20
|
try {
|
|
21
|
-
const updateFound = await
|
|
22
|
-
|
|
21
|
+
const updateFound = await swUpdate.checkForUpdate();
|
|
22
|
+
alertService.info(updateFound ? 'A new version is available.' : 'Already on the latest version.', noneAutoClosedAlertOptions);
|
|
23
23
|
}
|
|
24
24
|
catch (err) {
|
|
25
|
-
|
|
25
|
+
alertService.info('Failed to check for updates:', alertOptions);
|
|
26
26
|
}
|
|
27
|
-
})
|
|
28
|
-
|
|
27
|
+
});
|
|
28
|
+
swUpdate.versionUpdates
|
|
29
29
|
.pipe(filter((evt) => evt.type === 'VERSION_READY'))
|
|
30
30
|
.subscribe(_ => {
|
|
31
31
|
this.pendingAction = "SW_UPDATE";
|
|
32
|
-
|
|
33
|
-
})
|
|
34
|
-
|
|
32
|
+
dialogService.createNew(EnumTranslateKey.UI_COMMON_EMPTY_STRING, undefined, undefined, undefined, EnumTranslateKey.UI_CORE_DIALOG_SERVICE_A_NEW_APP_VERSION_IS_READY_DO_YOU_WANT_TO_UPDATE);
|
|
33
|
+
});
|
|
34
|
+
dialogService.dialogConfirmed$.pipe(filter(x => !!x)).subscribe(_ => {
|
|
35
35
|
if (this.pendingAction === 'SW_UPDATE') {
|
|
36
36
|
this.pendingAction = '';
|
|
37
37
|
document.location.reload();
|
|
38
38
|
}
|
|
39
|
-
})
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
})
|
|
39
|
+
});
|
|
40
|
+
swUpdate.unrecoverable.subscribe(event => {
|
|
41
|
+
alertService.info('An error occurred that we cannot recover from:\n' + event.reason + '\n\nPlease reload the page.', noneAutoClosedAlertOptions);
|
|
42
|
+
});
|
|
43
43
|
}
|
|
44
44
|
ngOnDestroy() {
|
|
45
45
|
this.subscriptions.map(x => x?.unsubscribe());
|
|
@@ -51,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
51
51
|
type: Injectable,
|
|
52
52
|
args: [{ providedIn: 'root' }]
|
|
53
53
|
}], ctorParameters: () => [{ type: i0.ApplicationRef }, { type: i1.SwUpdate }, { type: i2.AlertService }, { type: i3.DialogService }] });
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stZm9yLXVwZGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvc2VydmljZXMvY2hlY2stZm9yLXVwZGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBa0IsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXRFLE9BQU8sRUFBZ0IsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFHMUQsTUFBTSxPQUFPLHFCQUFxQjtJQUtoQyxZQUNFLE1BQXNCLEVBQ3RCLFFBQWtCLEVBQ2xCLFlBQTBCLEVBQzFCLGFBQTRCO1FBUDlCLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUNuQyxrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQVF6QixvREFBb0Q7UUFDcEQseUNBQXlDO1FBQ3pDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNwRCxNQUFNLDZCQUE2QixHQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFM0UsNkJBQTZCLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ2pELElBQUk7Z0JBQ0YsTUFBTSxXQUFXLEdBQUcsTUFBTSxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3BELFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLENBQUMsZ0NBQWdDLEVBQUUsMEJBQTBCLENBQUMsQ0FBQzthQUMvSDtZQUFDLE9BQU8sR0FBRyxFQUFFO2dCQUNaLFlBQVksQ0FBQyxJQUFJLENBQUMsOEJBQThCLEVBQUUsWUFBWSxDQUFDLENBQUM7YUFDakU7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILFFBQVEsQ0FBQyxjQUFjO2FBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQTRCLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxDQUFDO2FBQzdFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNiLElBQUksQ0FBQyxhQUFhLEdBQUcsV0FBVyxDQUFDO1lBQ2pDLGFBQWEsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsdUVBQXVFLENBQUMsQ0FBQTtRQUM3TCxDQUFDLENBQUMsQ0FBQTtRQUVKLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2xFLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxXQUFXLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO2dCQUN4QixRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQzVCO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFFRixRQUFRLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2QyxZQUFZLENBQUMsSUFBSSxDQUFDLGtEQUFrRCxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsNkJBQTZCLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztRQUNuSixDQUFDLENBQUMsQ0FBQTtJQUVKLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQTtJQUMvQyxDQUFDOzhHQWhEVSxxQkFBcUI7a0hBQXJCLHFCQUFxQixjQURSLE1BQU07OzJGQUNuQixxQkFBcUI7a0JBRGpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwbGljYXRpb25SZWYsIEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTd1VwZGF0ZSwgVmVyc2lvblJlYWR5RXZlbnQgfSBmcm9tICdAYW5ndWxhci9zZXJ2aWNlLXdvcmtlcic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgY29uY2F0LCBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9saWJyYXJpZXMvYWxlcnQvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IGFsZXJ0T3B0aW9ucywgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMgfSBmcm9tICcuLi9jb25zdGFudHMvYWxlcnRPcHRpb25zJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4vZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnVtVHJhbnNsYXRlS2V5IH0gZnJvbSAnYWxwaGEtZ2xvYmFsLWNvbnN0YW50cyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgQ2hlY2tGb3JVcGRhdGVTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwZW5kaW5nQWN0aW9uOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxyXG4gICAgc3dVcGRhdGU6IFN3VXBkYXRlLFxyXG4gICAgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXHJcbiAgICBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICAvLyBBbGxvdyB0aGUgYXBwIHRvIHN0YWJpbGl6ZSBmaXJzdCwgYmVmb3JlIHN0YXJ0aW5nXHJcbiAgICAvLyBwb2xsaW5nIGZvciB1cGRhdGVzIHdpdGggYGludGVydmFsKClgLlxyXG4gICAgY29uc3QgYXBwSXNTdGFibGUkID0gYXBwUmVmLmlzU3RhYmxlLnBpcGUoZmlyc3QoaXNTdGFibGUgPT4gaXNTdGFibGUgPT09IHRydWUpKTtcclxuICAgIGNvbnN0IGV2ZXJ5U2l4SG91cnMkID0gaW50ZXJ2YWwoNiAqIDYwICogNjAgKiAxMDAwKTtcclxuICAgIGNvbnN0IGV2ZXJ5U2l4SG91cnNPbmNlQXBwSXNTdGFibGUkID0gY29uY2F0KGFwcElzU3RhYmxlJCwgZXZlcnlTaXhIb3VycyQpO1xyXG5cclxuICAgIGV2ZXJ5U2l4SG91cnNPbmNlQXBwSXNTdGFibGUkLnN1YnNjcmliZShhc3luYyAoKSA9PiB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgdXBkYXRlRm91bmQgPSBhd2FpdCBzd1VwZGF0ZS5jaGVja0ZvclVwZGF0ZSgpO1xyXG4gICAgICAgIGFsZXJ0U2VydmljZS5pbmZvKHVwZGF0ZUZvdW5kID8gJ0EgbmV3IHZlcnNpb24gaXMgYXZhaWxhYmxlLicgOiAnQWxyZWFkeSBvbiB0aGUgbGF0ZXN0IHZlcnNpb24uJywgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpO1xyXG4gICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICBhbGVydFNlcnZpY2UuaW5mbygnRmFpbGVkIHRvIGNoZWNrIGZvciB1cGRhdGVzOicsIGFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHN3VXBkYXRlLnZlcnNpb25VcGRhdGVzXHJcbiAgICAgIC5waXBlKGZpbHRlcigoZXZ0KTogZXZ0IGlzIFZlcnNpb25SZWFkeUV2ZW50ID0+IGV2dC50eXBlID09PSAnVkVSU0lPTl9SRUFEWScpKVxyXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgIHRoaXMucGVuZGluZ0FjdGlvbiA9IFwiU1dfVVBEQVRFXCI7XHJcbiAgICAgICAgZGlhbG9nU2VydmljZS5jcmVhdGVOZXcoRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fRU1QVFlfU1RSSU5HLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPUkVfRElBTE9HX1NFUlZJQ0VfQV9ORVdfQVBQX1ZFUlNJT05fSVNfUkVBRFlfRE9fWU9VX1dBTlRfVE9fVVBEQVRFKVxyXG4gICAgICB9KVxyXG5cclxuICAgIGRpYWxvZ1NlcnZpY2UuZGlhbG9nQ29uZmlybWVkJC5waXBlKGZpbHRlcih4ID0+ICEheCkpLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgaWYgKHRoaXMucGVuZGluZ0FjdGlvbiA9PT0gJ1NXX1VQREFURScpIHtcclxuICAgICAgICB0aGlzLnBlbmRpbmdBY3Rpb24gPSAnJztcclxuICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5yZWxvYWQoKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICBzd1VwZGF0ZS51bnJlY292ZXJhYmxlLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgIGFsZXJ0U2VydmljZS5pbmZvKCdBbiBlcnJvciBvY2N1cnJlZCB0aGF0IHdlIGNhbm5vdCByZWNvdmVyIGZyb206XFxuJyArIGV2ZW50LnJlYXNvbiArICdcXG5cXG5QbGVhc2UgcmVsb2FkIHRoZSBwYWdlLicsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKTtcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKHggPT4geD8udW5zdWJzY3JpYmUoKSlcclxuICB9XHJcblxyXG59Il19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Injectable, Component, Pipe, ViewChild, forwardRef, Directive, HostListener, Inject, inject, isDevMode, InjectionToken, EventEmitter, Input, Output, ViewEncapsulation, NgModule } from '@angular/core';
|
|
3
|
-
import { BehaviorSubject, Subject, filter, of, Observable, zip, catchError, throwError, map as map$1, debounceTime, fromEvent, distinctUntilChanged, switchMap as switchMap$1, takeUntil } from 'rxjs';
|
|
3
|
+
import { BehaviorSubject, Subject, filter, of, Observable, zip, catchError, throwError, map as map$1, interval, concat, debounceTime, fromEvent, distinctUntilChanged, switchMap as switchMap$1, takeUntil } from 'rxjs';
|
|
4
4
|
import { api, EnumTranslateKey } from 'alpha-global-constants';
|
|
5
5
|
import * as i1 from '@angular/common/http';
|
|
6
6
|
import { HttpHeaders, HttpClient, HttpResponse, HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
@@ -3215,38 +3215,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
3215
3215
|
|
|
3216
3216
|
class CheckForUpdateService {
|
|
3217
3217
|
constructor(appRef, swUpdate, alertService, dialogService) {
|
|
3218
|
-
this.swUpdate = swUpdate;
|
|
3219
|
-
this.alertService = alertService;
|
|
3220
|
-
this.dialogService = dialogService;
|
|
3221
3218
|
this.subscriptions = [];
|
|
3222
3219
|
this.pendingAction = '';
|
|
3223
|
-
|
|
3224
|
-
|
|
3225
|
-
|
|
3226
|
-
|
|
3220
|
+
// Allow the app to stabilize first, before starting
|
|
3221
|
+
// polling for updates with `interval()`.
|
|
3222
|
+
const appIsStable$ = appRef.isStable.pipe(first(isStable => isStable === true));
|
|
3223
|
+
const everySixHours$ = interval(6 * 60 * 60 * 1000);
|
|
3224
|
+
const everySixHoursOnceAppIsStable$ = concat(appIsStable$, everySixHours$);
|
|
3225
|
+
everySixHoursOnceAppIsStable$.subscribe(async () => {
|
|
3227
3226
|
try {
|
|
3228
|
-
const updateFound = await
|
|
3229
|
-
|
|
3227
|
+
const updateFound = await swUpdate.checkForUpdate();
|
|
3228
|
+
alertService.info(updateFound ? 'A new version is available.' : 'Already on the latest version.', noneAutoClosedAlertOptions);
|
|
3230
3229
|
}
|
|
3231
3230
|
catch (err) {
|
|
3232
|
-
|
|
3231
|
+
alertService.info('Failed to check for updates:', alertOptions);
|
|
3233
3232
|
}
|
|
3234
|
-
})
|
|
3235
|
-
|
|
3233
|
+
});
|
|
3234
|
+
swUpdate.versionUpdates
|
|
3236
3235
|
.pipe(filter$1((evt) => evt.type === 'VERSION_READY'))
|
|
3237
3236
|
.subscribe(_ => {
|
|
3238
3237
|
this.pendingAction = "SW_UPDATE";
|
|
3239
|
-
|
|
3240
|
-
})
|
|
3241
|
-
|
|
3238
|
+
dialogService.createNew(EnumTranslateKey.UI_COMMON_EMPTY_STRING, undefined, undefined, undefined, EnumTranslateKey.UI_CORE_DIALOG_SERVICE_A_NEW_APP_VERSION_IS_READY_DO_YOU_WANT_TO_UPDATE);
|
|
3239
|
+
});
|
|
3240
|
+
dialogService.dialogConfirmed$.pipe(filter$1(x => !!x)).subscribe(_ => {
|
|
3242
3241
|
if (this.pendingAction === 'SW_UPDATE') {
|
|
3243
3242
|
this.pendingAction = '';
|
|
3244
3243
|
document.location.reload();
|
|
3245
3244
|
}
|
|
3246
|
-
})
|
|
3247
|
-
|
|
3248
|
-
|
|
3249
|
-
})
|
|
3245
|
+
});
|
|
3246
|
+
swUpdate.unrecoverable.subscribe(event => {
|
|
3247
|
+
alertService.info('An error occurred that we cannot recover from:\n' + event.reason + '\n\nPlease reload the page.', noneAutoClosedAlertOptions);
|
|
3248
|
+
});
|
|
3250
3249
|
}
|
|
3251
3250
|
ngOnDestroy() {
|
|
3252
3251
|
this.subscriptions.map(x => x?.unsubscribe());
|