ngx-histaff-alpha 1.1.4 → 1.1.6

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.
@@ -14,9 +14,9 @@ export class CheckForUpdateService {
14
14
  // Allow the app to stabilize first, before starting
15
15
  // polling for updates with `interval()`.
16
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 () => {
17
+ const everyThirtySeconds$ = interval(30 * 1000);
18
+ const thirtySecondsOnceAppIsStable$ = concat(appIsStable$, everyThirtySeconds$);
19
+ thirtySecondsOnceAppIsStable$.subscribe(async () => {
20
20
  try {
21
21
  const updateFound = await swUpdate.checkForUpdate();
22
22
  alertService.info(updateFound ? 'A new version is available.' : 'Already on the latest version.', noneAutoClosedAlertOptions);
@@ -29,7 +29,7 @@ export class CheckForUpdateService {
29
29
  .pipe(filter((evt) => evt.type === 'VERSION_READY'))
30
30
  .subscribe(_ => {
31
31
  this.pendingAction = "SW_UPDATE";
32
- zone.run(() => 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));
32
+ zone.run(() => dialogService.createNew(EnumTranslateKey.UI_CORE_CONFIRM_DIALOG_BUTTON_CONFIRM, undefined, undefined, undefined, EnumTranslateKey.UI_CORE_DIALOG_SERVICE_A_NEW_APP_VERSION_IS_READY_DO_YOU_WANT_TO_UPDATE, []));
33
33
  });
34
34
  dialogService.dialogConfirmed$.pipe(filter(x => !!x)).subscribe(_ => {
35
35
  if (this.pendingAction === 'SW_UPDATE') {
@@ -40,6 +40,22 @@ export class CheckForUpdateService {
40
40
  swUpdate.unrecoverable.subscribe(event => {
41
41
  alertService.info('An error occurred that we cannot recover from:\n' + event.reason + '\n\nPlease reload the page.', noneAutoClosedAlertOptions);
42
42
  });
43
+ swUpdate.versionUpdates.subscribe(evt => {
44
+ switch (evt.type) {
45
+ case 'VERSION_DETECTED':
46
+ alertService.info(`Downloading new app version: ${evt.version.hash}`, alertOptions);
47
+ break;
48
+ case 'NO_NEW_VERSION_DETECTED':
49
+ alertService.info(`No new version detected`, alertOptions);
50
+ break;
51
+ case 'VERSION_READY':
52
+ alertService.info(`Current app version: ${evt.currentVersion.hash}. New app version ready for use: ${evt.latestVersion.hash}`, noneAutoClosedAlertOptions);
53
+ break;
54
+ case 'VERSION_INSTALLATION_FAILED':
55
+ alertService.error(`Failed to install app version '${evt.version.hash}': ${evt.error}`, alertOptions);
56
+ break;
57
+ }
58
+ });
43
59
  }
44
60
  ngOnDestroy() {
45
61
  this.subscriptions.map(x => x?.unsubscribe());
@@ -51,4 +67,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
51
67
  type: Injectable,
52
68
  args: [{ providedIn: 'root' }]
53
69
  }], ctorParameters: () => [{ type: i0.ApplicationRef }, { type: i1.SwUpdate }, { type: i2.AlertService }, { type: i3.DialogService }, { type: i0.NgZone }] });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stZm9yLXVwZGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvc2VydmljZXMvY2hlY2stZm9yLXVwZGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBa0IsVUFBVSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU5RSxPQUFPLEVBQWdCLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFckYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBRzFELE1BQU0sT0FBTyxxQkFBcUI7SUFLaEMsWUFDRSxNQUFzQixFQUN0QixRQUFrQixFQUNsQixZQUEwQixFQUMxQixhQUE0QixFQUM1QixJQUFZO1FBUmQsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBQ25DLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBU3pCLG9EQUFvRDtRQUNwRCx5Q0FBeUM7UUFDekMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEYsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3BELE1BQU0sNkJBQTZCLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQztRQUUzRSw2QkFBNkIsQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDakQsSUFBSTtnQkFDRixNQUFNLFdBQVcsR0FBRyxNQUFNLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDcEQsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQyxnQ0FBZ0MsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO2FBQy9IO1lBQUMsT0FBTyxHQUFHLEVBQUU7Z0JBQ1osWUFBWSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxZQUFZLENBQUMsQ0FBQzthQUNqRTtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsUUFBUSxDQUFDLGNBQWM7YUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBNEIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLENBQUM7YUFDN0UsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2IsSUFBSSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUM7WUFDakMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixDQUFDLHVFQUF1RSxDQUFDLENBQUMsQ0FBQTtRQUM3TSxDQUFDLENBQUMsQ0FBQTtRQUVKLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2xFLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxXQUFXLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO2dCQUN4QixRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQzVCO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFFRixRQUFRLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2QyxZQUFZLENBQUMsSUFBSSxDQUFDLGtEQUFrRCxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsNkJBQTZCLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztRQUNuSixDQUFDLENBQUMsQ0FBQTtJQUVKLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQTtJQUMvQyxDQUFDOzhHQWpEVSxxQkFBcUI7a0hBQXJCLHFCQUFxQixjQURSLE1BQU07OzJGQUNuQixxQkFBcUI7a0JBRGpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwbGljYXRpb25SZWYsIEluamVjdGFibGUsIE9uRGVzdHJveSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN3VXBkYXRlLCBWZXJzaW9uUmVhZHlFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL3NlcnZpY2Utd29ya2VyJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBjb25jYXQsIGludGVydmFsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbHRlciwgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL2xpYnJhcmllcy9hbGVydC9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgYWxlcnRPcHRpb25zLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyB9IGZyb20gJy4uL2NvbnN0YW50cy9hbGVydE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tICdhbHBoYS1nbG9iYWwtY29uc3RhbnRzJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBDaGVja0ZvclVwZGF0ZVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIHBlbmRpbmdBY3Rpb246IHN0cmluZyA9ICcnO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXHJcbiAgICBzd1VwZGF0ZTogU3dVcGRhdGUsXHJcbiAgICBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICB6b25lOiBOZ1pvbmVcclxuICApIHtcclxuICAgIC8vIEFsbG93IHRoZSBhcHAgdG8gc3RhYmlsaXplIGZpcnN0LCBiZWZvcmUgc3RhcnRpbmdcclxuICAgIC8vIHBvbGxpbmcgZm9yIHVwZGF0ZXMgd2l0aCBgaW50ZXJ2YWwoKWAuXHJcbiAgICBjb25zdCBhcHBJc1N0YWJsZSQgPSBhcHBSZWYuaXNTdGFibGUucGlwZShmaXJzdChpc1N0YWJsZSA9PiBpc1N0YWJsZSA9PT0gdHJ1ZSkpO1xyXG4gICAgY29uc3QgZXZlcnlTaXhIb3VycyQgPSBpbnRlcnZhbCg2ICogNjAgKiA2MCAqIDEwMDApO1xyXG4gICAgY29uc3QgZXZlcnlTaXhIb3Vyc09uY2VBcHBJc1N0YWJsZSQgPSBjb25jYXQoYXBwSXNTdGFibGUkLCBldmVyeVNpeEhvdXJzJCk7XHJcblxyXG4gICAgZXZlcnlTaXhIb3Vyc09uY2VBcHBJc1N0YWJsZSQuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCB1cGRhdGVGb3VuZCA9IGF3YWl0IHN3VXBkYXRlLmNoZWNrRm9yVXBkYXRlKCk7XHJcbiAgICAgICAgYWxlcnRTZXJ2aWNlLmluZm8odXBkYXRlRm91bmQgPyAnQSBuZXcgdmVyc2lvbiBpcyBhdmFpbGFibGUuJyA6ICdBbHJlYWR5IG9uIHRoZSBsYXRlc3QgdmVyc2lvbi4nLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIGFsZXJ0U2VydmljZS5pbmZvKCdGYWlsZWQgdG8gY2hlY2sgZm9yIHVwZGF0ZXM6JywgYWxlcnRPcHRpb25zKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgc3dVcGRhdGUudmVyc2lvblVwZGF0ZXNcclxuICAgICAgLnBpcGUoZmlsdGVyKChldnQpOiBldnQgaXMgVmVyc2lvblJlYWR5RXZlbnQgPT4gZXZ0LnR5cGUgPT09ICdWRVJTSU9OX1JFQURZJykpXHJcbiAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgdGhpcy5wZW5kaW5nQWN0aW9uID0gXCJTV19VUERBVEVcIjtcclxuICAgICAgICB6b25lLnJ1bigoKSA9PiBkaWFsb2dTZXJ2aWNlLmNyZWF0ZU5ldyhFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTU1PTl9FTVBUWV9TVFJJTkcsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9ESUFMT0dfU0VSVklDRV9BX05FV19BUFBfVkVSU0lPTl9JU19SRUFEWV9ET19ZT1VfV0FOVF9UT19VUERBVEUpKVxyXG4gICAgICB9KVxyXG5cclxuICAgIGRpYWxvZ1NlcnZpY2UuZGlhbG9nQ29uZmlybWVkJC5waXBlKGZpbHRlcih4ID0+ICEheCkpLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgaWYgKHRoaXMucGVuZGluZ0FjdGlvbiA9PT0gJ1NXX1VQREFURScpIHtcclxuICAgICAgICB0aGlzLnBlbmRpbmdBY3Rpb24gPSAnJztcclxuICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5yZWxvYWQoKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICBzd1VwZGF0ZS51bnJlY292ZXJhYmxlLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgIGFsZXJ0U2VydmljZS5pbmZvKCdBbiBlcnJvciBvY2N1cnJlZCB0aGF0IHdlIGNhbm5vdCByZWNvdmVyIGZyb206XFxuJyArIGV2ZW50LnJlYXNvbiArICdcXG5cXG5QbGVhc2UgcmVsb2FkIHRoZSBwYWdlLicsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKTtcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKHggPT4geD8udW5zdWJzY3JpYmUoKSlcclxuICB9XHJcblxyXG59Il19
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stZm9yLXVwZGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvc2VydmljZXMvY2hlY2stZm9yLXVwZGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBa0IsVUFBVSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU5RSxPQUFPLEVBQWdCLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFckYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBRzFELE1BQU0sT0FBTyxxQkFBcUI7SUFLaEMsWUFDRSxNQUFzQixFQUN0QixRQUFrQixFQUNsQixZQUEwQixFQUMxQixhQUE0QixFQUM1QixJQUFZO1FBUmQsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBQ25DLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBU3pCLG9EQUFvRDtRQUNwRCx5Q0FBeUM7UUFDekMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEYsTUFBTSxtQkFBbUIsR0FBRyxRQUFRLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2hELE1BQU0sNkJBQTZCLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBRWhGLDZCQUE2QixDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNqRCxJQUFJO2dC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QUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwbGljYXRpb25SZWYsIEluamVjdGFibGUsIE9uRGVzdHJveSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN3VXBkYXRlLCBWZXJzaW9uUmVhZHlFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL3NlcnZpY2Utd29ya2VyJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBjb25jYXQsIGludGVydmFsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbHRlciwgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL2xpYnJhcmllcy9hbGVydC9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgYWxlcnRPcHRpb25zLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyB9IGZyb20gJy4uL2NvbnN0YW50cy9hbGVydE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tICdhbHBoYS1nbG9iYWwtY29uc3RhbnRzJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBDaGVja0ZvclVwZGF0ZVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIHBlbmRpbmdBY3Rpb246IHN0cmluZyA9ICcnO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXHJcbiAgICBzd1VwZGF0ZTogU3dVcGRhdGUsXHJcbiAgICBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICB6b25lOiBOZ1pvbmVcclxuICApIHtcclxuICAgIC8vIEFsbG93IHRoZSBhcHAgdG8gc3RhYmlsaXplIGZpcnN0LCBiZWZvcmUgc3RhcnRpbmdcclxuICAgIC8vIHBvbGxpbmcgZm9yIHVwZGF0ZXMgd2l0aCBgaW50ZXJ2YWwoKWAuXHJcbiAgICBjb25zdCBhcHBJc1N0YWJsZSQgPSBhcHBSZWYuaXNTdGFibGUucGlwZShmaXJzdChpc1N0YWJsZSA9PiBpc1N0YWJsZSA9PT0gdHJ1ZSkpO1xyXG4gICAgY29uc3QgZXZlcnlUaGlydHlTZWNvbmRzJCA9IGludGVydmFsKDMwICogMTAwMCk7XHJcbiAgICBjb25zdCB0aGlydHlTZWNvbmRzT25jZUFwcElzU3RhYmxlJCA9IGNvbmNhdChhcHBJc1N0YWJsZSQsIGV2ZXJ5VGhpcnR5U2Vjb25kcyQpO1xyXG5cclxuICAgIHRoaXJ0eVNlY29uZHNPbmNlQXBwSXNTdGFibGUkLnN1YnNjcmliZShhc3luYyAoKSA9PiB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgdXBkYXRlRm91bmQgPSBhd2FpdCBzd1VwZGF0ZS5jaGVja0ZvclVwZGF0ZSgpO1xyXG4gICAgICAgIGFsZXJ0U2VydmljZS5pbmZvKHVwZGF0ZUZvdW5kID8gJ0EgbmV3IHZlcnNpb24gaXMgYXZhaWxhYmxlLicgOiAnQWxyZWFkeSBvbiB0aGUgbGF0ZXN0IHZlcnNpb24uJywgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpO1xyXG4gICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICBhbGVydFNlcnZpY2UuaW5mbygnRmFpbGVkIHRvIGNoZWNrIGZvciB1cGRhdGVzOicsIGFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHN3VXBkYXRlLnZlcnNpb25VcGRhdGVzXHJcbiAgICAgIC5waXBlKGZpbHRlcigoZXZ0KTogZXZ0IGlzIFZlcnNpb25SZWFkeUV2ZW50ID0+IGV2dC50eXBlID09PSAnVkVSU0lPTl9SRUFEWScpKVxyXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgIHRoaXMucGVuZGluZ0FjdGlvbiA9IFwiU1dfVVBEQVRFXCI7XHJcbiAgICAgICAgem9uZS5ydW4oKCkgPT4gZGlhbG9nU2VydmljZS5jcmVhdGVOZXcoRW51bVRyYW5zbGF0ZUtleS5VSV9DT1JFX0NPTkZJUk1fRElBTE9HX0JVVFRPTl9DT05GSVJNLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPUkVfRElBTE9HX1NFUlZJQ0VfQV9ORVdfQVBQX1ZFUlNJT05fSVNfUkVBRFlfRE9fWU9VX1dBTlRfVE9fVVBEQVRFLCBbXSkpXHJcbiAgICAgIH0pXHJcblxyXG4gICAgZGlhbG9nU2VydmljZS5kaWFsb2dDb25maXJtZWQkLnBpcGUoZmlsdGVyKHggPT4gISF4KSkuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICBpZiAodGhpcy5wZW5kaW5nQWN0aW9uID09PSAnU1dfVVBEQVRFJykge1xyXG4gICAgICAgIHRoaXMucGVuZGluZ0FjdGlvbiA9ICcnO1xyXG4gICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLnJlbG9hZCgpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIHN3VXBkYXRlLnVucmVjb3ZlcmFibGUuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgYWxlcnRTZXJ2aWNlLmluZm8oJ0FuIGVycm9yIG9jY3VycmVkIHRoYXQgd2UgY2Fubm90IHJlY292ZXIgZnJvbTpcXG4nICsgZXZlbnQucmVhc29uICsgJ1xcblxcblBsZWFzZSByZWxvYWQgdGhlIHBhZ2UuJywgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpO1xyXG4gICAgfSlcclxuXHJcbiAgICBzd1VwZGF0ZS52ZXJzaW9uVXBkYXRlcy5zdWJzY3JpYmUoZXZ0ID0+IHtcclxuICAgICAgc3dpdGNoIChldnQudHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ1ZFUlNJT05fREVURUNURUQnOlxyXG4gICAgICAgICAgYWxlcnRTZXJ2aWNlLmluZm8oYERvd25sb2FkaW5nIG5ldyBhcHAgdmVyc2lvbjogJHtldnQudmVyc2lvbi5oYXNofWAsIGFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdOT19ORVdfVkVSU0lPTl9ERVRFQ1RFRCc6XHJcbiAgICAgICAgICBhbGVydFNlcnZpY2UuaW5mbyhgTm8gbmV3IHZlcnNpb24gZGV0ZWN0ZWRgLCBhbGVydE9wdGlvbnMpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnVkVSU0lPTl9SRUFEWSc6XHJcbiAgICAgICAgICBhbGVydFNlcnZpY2UuaW5mbyhgQ3VycmVudCBhcHAgdmVyc2lvbjogJHtldnQuY3VycmVudFZlcnNpb24uaGFzaH0uIE5ldyBhcHAgdmVyc2lvbiByZWFkeSBmb3IgdXNlOiAke2V2dC5sYXRlc3RWZXJzaW9uLmhhc2h9YCwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnVkVSU0lPTl9JTlNUQUxMQVRJT05fRkFJTEVEJzpcclxuICAgICAgICAgIGFsZXJ0U2VydmljZS5lcnJvcihgRmFpbGVkIHRvIGluc3RhbGwgYXBwIHZlcnNpb24gJyR7ZXZ0LnZlcnNpb24uaGFzaH0nOiAke2V2dC5lcnJvcn1gLCBhbGVydE9wdGlvbnMpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5tYXAoeCA9PiB4Py51bnN1YnNjcmliZSgpKVxyXG4gIH1cclxuXHJcbn0iXX0=
@@ -3220,9 +3220,9 @@ class CheckForUpdateService {
3220
3220
  // Allow the app to stabilize first, before starting
3221
3221
  // polling for updates with `interval()`.
3222
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 () => {
3223
+ const everyThirtySeconds$ = interval(30 * 1000);
3224
+ const thirtySecondsOnceAppIsStable$ = concat(appIsStable$, everyThirtySeconds$);
3225
+ thirtySecondsOnceAppIsStable$.subscribe(async () => {
3226
3226
  try {
3227
3227
  const updateFound = await swUpdate.checkForUpdate();
3228
3228
  alertService.info(updateFound ? 'A new version is available.' : 'Already on the latest version.', noneAutoClosedAlertOptions);
@@ -3235,7 +3235,7 @@ class CheckForUpdateService {
3235
3235
  .pipe(filter$1((evt) => evt.type === 'VERSION_READY'))
3236
3236
  .subscribe(_ => {
3237
3237
  this.pendingAction = "SW_UPDATE";
3238
- zone.run(() => 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));
3238
+ zone.run(() => dialogService.createNew(EnumTranslateKey.UI_CORE_CONFIRM_DIALOG_BUTTON_CONFIRM, undefined, undefined, undefined, EnumTranslateKey.UI_CORE_DIALOG_SERVICE_A_NEW_APP_VERSION_IS_READY_DO_YOU_WANT_TO_UPDATE, []));
3239
3239
  });
3240
3240
  dialogService.dialogConfirmed$.pipe(filter$1(x => !!x)).subscribe(_ => {
3241
3241
  if (this.pendingAction === 'SW_UPDATE') {
@@ -3246,6 +3246,22 @@ class CheckForUpdateService {
3246
3246
  swUpdate.unrecoverable.subscribe(event => {
3247
3247
  alertService.info('An error occurred that we cannot recover from:\n' + event.reason + '\n\nPlease reload the page.', noneAutoClosedAlertOptions);
3248
3248
  });
3249
+ swUpdate.versionUpdates.subscribe(evt => {
3250
+ switch (evt.type) {
3251
+ case 'VERSION_DETECTED':
3252
+ alertService.info(`Downloading new app version: ${evt.version.hash}`, alertOptions);
3253
+ break;
3254
+ case 'NO_NEW_VERSION_DETECTED':
3255
+ alertService.info(`No new version detected`, alertOptions);
3256
+ break;
3257
+ case 'VERSION_READY':
3258
+ alertService.info(`Current app version: ${evt.currentVersion.hash}. New app version ready for use: ${evt.latestVersion.hash}`, noneAutoClosedAlertOptions);
3259
+ break;
3260
+ case 'VERSION_INSTALLATION_FAILED':
3261
+ alertService.error(`Failed to install app version '${evt.version.hash}': ${evt.error}`, alertOptions);
3262
+ break;
3263
+ }
3264
+ });
3249
3265
  }
3250
3266
  ngOnDestroy() {
3251
3267
  this.subscriptions.map(x => x?.unsubscribe());