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 { filter, first, map } from 'rxjs/operators';
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
- this.appIsStable$ = appRef.isStable.pipe(map(x => this.appIsStable = x), first(isStable => isStable === true));
17
- }
18
- subscribe() {
19
- this.subscriptions.push(this.appIsStable$.subscribe(async () => {
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 this.swUpdate.checkForUpdate();
22
- this.alertService.success(updateFound ? 'A new version is available.' : 'Already on the latest version.', alertOptions);
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
- this.alertService.error('Failed to check for updates: ' + JSON.stringify(err), alertOptions);
25
+ alertService.info('Failed to check for updates:', alertOptions);
26
26
  }
27
- }));
28
- this.subscriptions.push(this.swUpdate.versionUpdates
27
+ });
28
+ swUpdate.versionUpdates
29
29
  .pipe(filter((evt) => evt.type === 'VERSION_READY'))
30
30
  .subscribe(_ => {
31
31
  this.pendingAction = "SW_UPDATE";
32
- this.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
- this.subscriptions.push(this.dialogService.dialogConfirmed$.pipe(filter(x => !!x)).subscribe(_ => {
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
- this.subscriptions.push(this.swUpdate.unrecoverable.subscribe(event => {
41
- this.alertService.info('An error occurred that we cannot recover from:\n' + event.reason + '\n\nPlease reload the page.', noneAutoClosedAlertOptions);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stZm9yLXVwZGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvc2VydmljZXMvY2hlY2stZm9yLXVwZGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBa0IsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBR3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFHMUQsTUFBTSxPQUFPLHFCQUFxQjtJQVFoQyxZQUNFLE1BQXNCLEVBQ2QsUUFBa0IsRUFDbEIsWUFBMEIsRUFDMUIsYUFBNEI7UUFGNUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVZ0QyxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFDbkMsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFXekIsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDdEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFDOUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUNuQyxDQUFDO0lBQ04sQ0FBQztJQUVELFNBQVM7UUFFUCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDckMsSUFBSTtnQkFDRixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxFQUFFLFlBQVksQ0FBQyxDQUFBO2FBQ3hIO1lBQUMsT0FBTyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsK0JBQStCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFJLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQTthQUM5RjtRQUNILENBQUMsQ0FBQyxDQUNILENBQUE7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjO2FBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQTRCLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxDQUFDO2FBQzdFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNiLElBQUksQ0FBQyxhQUFhLEdBQUcsV0FBVyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixDQUFDLHVFQUF1RSxDQUFDLENBQUE7UUFDbE0sQ0FBQyxDQUFDLENBQ0wsQ0FBQTtRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdkUsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLFdBQVcsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7Z0JBQ3hCLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDNUI7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFBO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxrREFBa0QsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLDZCQUE2QixFQUFFLDBCQUEwQixDQUFDLENBQUM7UUFDeEosQ0FBQyxDQUFDLENBQ0gsQ0FBQTtJQUVILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQTtJQUMvQyxDQUFDOzhHQTdEVSxxQkFBcUI7a0hBQXJCLHFCQUFxQixjQURSLE1BQU07OzJGQUNuQixxQkFBcUI7a0JBRGpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwbGljYXRpb25SZWYsIEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTd1VwZGF0ZSwgVmVyc2lvblJlYWR5RXZlbnQgfSBmcm9tICdAYW5ndWxhci9zZXJ2aWNlLXdvcmtlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIGZpcnN0LCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL2xpYnJhcmllcy9hbGVydC9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgYWxlcnRPcHRpb25zLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyB9IGZyb20gJy4uL2NvbnN0YW50cy9hbGVydE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tICdhbHBoYS1nbG9iYWwtY29uc3RhbnRzJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBDaGVja0ZvclVwZGF0ZVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIHBlbmRpbmdBY3Rpb246IHN0cmluZyA9ICcnO1xyXG5cclxuICBhcHBJc1N0YWJsZSE6IGJvb2xlYW47XHJcbiAgYXBwSXNTdGFibGUkITogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxyXG4gICAgcHJpdmF0ZSBzd1VwZGF0ZTogU3dVcGRhdGUsXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmFwcElzU3RhYmxlJCA9IGFwcFJlZi5pc1N0YWJsZS5waXBlKFxyXG4gICAgICBtYXAoeCA9PiB0aGlzLmFwcElzU3RhYmxlID0geCksXHJcbiAgICAgIGZpcnN0KGlzU3RhYmxlID0+IGlzU3RhYmxlID09PSB0cnVlKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgc3Vic2NyaWJlKCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmFwcElzU3RhYmxlJC5zdWJzY3JpYmUoYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBjb25zdCB1cGRhdGVGb3VuZCA9IGF3YWl0IHRoaXMuc3dVcGRhdGUuY2hlY2tGb3JVcGRhdGUoKTtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3ModXBkYXRlRm91bmQgPyAnQSBuZXcgdmVyc2lvbiBpcyBhdmFpbGFibGUuJyA6ICdBbHJlYWR5IG9uIHRoZSBsYXRlc3QgdmVyc2lvbi4nLCBhbGVydE9wdGlvbnMpXHJcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcignRmFpbGVkIHRvIGNoZWNrIGZvciB1cGRhdGVzOiAnICsgSlNPTi5zdHJpbmdpZnkoZXJyISksIGFsZXJ0T3B0aW9ucylcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuc3dVcGRhdGUudmVyc2lvblVwZGF0ZXNcclxuICAgICAgICAucGlwZShmaWx0ZXIoKGV2dCk6IGV2dCBpcyBWZXJzaW9uUmVhZHlFdmVudCA9PiBldnQudHlwZSA9PT0gJ1ZFUlNJT05fUkVBRFknKSlcclxuICAgICAgICAuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgICAgdGhpcy5wZW5kaW5nQWN0aW9uID0gXCJTV19VUERBVEVcIjtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5jcmVhdGVOZXcoRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fRU1QVFlfU1RSSU5HLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPUkVfRElBTE9HX1NFUlZJQ0VfQV9ORVdfQVBQX1ZFUlNJT05fSVNfUkVBRFlfRE9fWU9VX1dBTlRfVE9fVVBEQVRFKVxyXG4gICAgICAgIH0pXHJcbiAgICApXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5kaWFsb2dDb25maXJtZWQkLnBpcGUoZmlsdGVyKHggPT4gISF4KSkuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnBlbmRpbmdBY3Rpb24gPT09ICdTV19VUERBVEUnKSB7XHJcbiAgICAgICAgICB0aGlzLnBlbmRpbmdBY3Rpb24gPSAnJztcclxuICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLnJlbG9hZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5zd1VwZGF0ZS51bnJlY292ZXJhYmxlLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuaW5mbygnQW4gZXJyb3Igb2NjdXJyZWQgdGhhdCB3ZSBjYW5ub3QgcmVjb3ZlciBmcm9tOlxcbicgKyBldmVudC5yZWFzb24gKyAnXFxuXFxuUGxlYXNlIHJlbG9hZCB0aGUgcGFnZS4nLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgIH0pXHJcbiAgICApXHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKHggPT4geD8udW5zdWJzY3JpYmUoKSlcclxuICB9XHJcblxyXG59Il19
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
- this.appIsStable$ = appRef.isStable.pipe(map(x => this.appIsStable = x), first(isStable => isStable === true));
3224
- }
3225
- subscribe() {
3226
- this.subscriptions.push(this.appIsStable$.subscribe(async () => {
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 this.swUpdate.checkForUpdate();
3229
- this.alertService.success(updateFound ? 'A new version is available.' : 'Already on the latest version.', alertOptions);
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
- this.alertService.error('Failed to check for updates: ' + JSON.stringify(err), alertOptions);
3231
+ alertService.info('Failed to check for updates:', alertOptions);
3233
3232
  }
3234
- }));
3235
- this.subscriptions.push(this.swUpdate.versionUpdates
3233
+ });
3234
+ swUpdate.versionUpdates
3236
3235
  .pipe(filter$1((evt) => evt.type === 'VERSION_READY'))
3237
3236
  .subscribe(_ => {
3238
3237
  this.pendingAction = "SW_UPDATE";
3239
- this.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);
3240
- }));
3241
- this.subscriptions.push(this.dialogService.dialogConfirmed$.pipe(filter$1(x => !!x)).subscribe(_ => {
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
- this.subscriptions.push(this.swUpdate.unrecoverable.subscribe(event => {
3248
- this.alertService.info('An error occurred that we cannot recover from:\n' + event.reason + '\n\nPlease reload the page.', noneAutoClosedAlertOptions);
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());