mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-26 02:11:53 +00:00
save
This commit is contained in:
committed by
Aiden McClelland
parent
b72252b437
commit
66ddf752ac
@@ -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()
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user