This commit is contained in:
Aaron Greenspan
2021-01-19 16:07:21 -07:00
committed by Aiden McClelland
parent b72252b437
commit 66ddf752ac
2 changed files with 16 additions and 12 deletions

View File

@@ -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<string> {
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()
}

View File

@@ -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<void> {
// 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)