From 66ddf752ac7738287290676cf2a9f16042fe15fd Mon Sep 17 00:00:00 2001 From: Aaron Greenspan Date: Tue, 19 Jan 2021 16:07:21 -0700 Subject: [PATCH] save --- ui/src/app/services/os-update.service.ts | 14 ++++++++------ ui/src/app/services/startup-alerts.notifier.ts | 14 ++++++++------ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/ui/src/app/services/os-update.service.ts b/ui/src/app/services/os-update.service.ts index 9e688efda..eb955fe92 100644 --- a/ui/src/app/services/os-update.service.ts +++ b/ui/src/app/services/os-update.service.ts @@ -1,9 +1,9 @@ import { Injectable } from '@angular/core' import { NavController } from '@ionic/angular' -import { BehaviorSubject, combineLatest, forkJoin, interval, NextObserver, Observable, Observer, of } from 'rxjs' +import { BehaviorSubject, forkJoin, Observable, of } from 'rxjs' import { catchError, concatMap, distinctUntilChanged, filter, map, take, tap } from 'rxjs/operators' import { ServerModel, ServerStatus } from '../models/server-model' -import { exists } from '../util/misc.util' +import { traceWheel } from '../util/misc.util' import { ApiService } from './api/api.service' import { Emver } from './emver.service' @@ -23,17 +23,19 @@ export class OsUpdateService { private readonly serverModel: ServerModel, private readonly apiService: ApiService, private readonly navCtrl: NavController, - ) { - } + ) { } // emits everytime autoCheckUpdates becomes (or is) true autoCheck$ (): Observable { return this.serverModel.watch().autoCheckUpdates.pipe( + traceWheel('auto check updates 1'), distinctUntilChanged(), filter(check => check), + traceWheel('auto check updates 2'), concatMap(() => this.apiService.getVersionLatest()), + traceWheel('getVersionLatest'), map(({ canUpdate, versionLatest }) => canUpdate ? versionLatest : undefined), - tap(vl => this.$updateAvailable$.next(vl)), + tap(this.$updateAvailable$), ) } @@ -49,7 +51,7 @@ export class OsUpdateService { return of(undefined) }), // cache the result for components to learn update available without having to have called this method - tap(vl => this.$updateAvailable$.next(vl)), + tap(this.$updateAvailable$), ).toPromise() } diff --git a/ui/src/app/services/startup-alerts.notifier.ts b/ui/src/app/services/startup-alerts.notifier.ts index 891b90be9..c3980647f 100644 --- a/ui/src/app/services/startup-alerts.notifier.ts +++ b/ui/src/app/services/startup-alerts.notifier.ts @@ -4,7 +4,7 @@ import { combineLatest, EMPTY, iif, Observable, of } from 'rxjs' import { concatMap, filter, take } from 'rxjs/operators' import { OSWelcomePage } from '../modals/os-welcome/os-welcome.page' import { ServerModel } from '../models/server-model' -import { exists } from '../util/misc.util' +import { exists, traceWheel } from '../util/misc.util' import { ApiService } from './api/api.service' import { ConfigService } from './config.service' import { LoaderService } from './loader.service' @@ -25,8 +25,8 @@ export class GlobalAlertsNotifier { } init () { - of({ }).pipe( - concatMap(() => this.osWelcome$()), + console.log('init') + this.osWelcome$().pipe( concatMap(() => this.autoUpdateCheck$()), ).subscribe() } @@ -35,10 +35,11 @@ export class GlobalAlertsNotifier { const { welcomeAck, versionInstalled } = this.server.watch() return combineLatest([ welcomeAck, versionInstalled ]).pipe( - filter( ([wa, vi]) => vi && !wa), + filter( ([_, vi]) => !!vi), + traceWheel('osWelcome'), take(1), // we will check and show welcome message at most once per app instance - concatMap(([_, vi]) => iif( - () => vi === this.config.version, + concatMap(([wa, vi]) => iif( + () => !wa && vi === this.config.version, this.presentOsWelcome(vi), EMPTY, )), @@ -48,6 +49,7 @@ export class GlobalAlertsNotifier { private autoUpdateCheck$ (): Observable { // this emits iff autoCheck is on and update available return this.osUpdateService.autoCheck$().pipe( + traceWheel('autoUpdateCheck'), filter(exists), concatMap(async vl => { const { update } = await this.presentAlertNewOS(vl)