mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-04-04 14:29:45 +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 { Injectable } from '@angular/core'
|
||||||
import { NavController } from '@ionic/angular'
|
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 { catchError, concatMap, distinctUntilChanged, filter, map, take, tap } from 'rxjs/operators'
|
||||||
import { ServerModel, ServerStatus } from '../models/server-model'
|
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 { ApiService } from './api/api.service'
|
||||||
import { Emver } from './emver.service'
|
import { Emver } from './emver.service'
|
||||||
|
|
||||||
@@ -23,17 +23,19 @@ export class OsUpdateService {
|
|||||||
private readonly serverModel: ServerModel,
|
private readonly serverModel: ServerModel,
|
||||||
private readonly apiService: ApiService,
|
private readonly apiService: ApiService,
|
||||||
private readonly navCtrl: NavController,
|
private readonly navCtrl: NavController,
|
||||||
) {
|
) { }
|
||||||
}
|
|
||||||
|
|
||||||
// emits everytime autoCheckUpdates becomes (or is) true
|
// emits everytime autoCheckUpdates becomes (or is) true
|
||||||
autoCheck$ (): Observable<string> {
|
autoCheck$ (): Observable<string> {
|
||||||
return this.serverModel.watch().autoCheckUpdates.pipe(
|
return this.serverModel.watch().autoCheckUpdates.pipe(
|
||||||
|
traceWheel('auto check updates 1'),
|
||||||
distinctUntilChanged(),
|
distinctUntilChanged(),
|
||||||
filter(check => check),
|
filter(check => check),
|
||||||
|
traceWheel('auto check updates 2'),
|
||||||
concatMap(() => this.apiService.getVersionLatest()),
|
concatMap(() => this.apiService.getVersionLatest()),
|
||||||
|
traceWheel('getVersionLatest'),
|
||||||
map(({ canUpdate, versionLatest }) => canUpdate ? versionLatest : undefined),
|
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)
|
return of(undefined)
|
||||||
}),
|
}),
|
||||||
// cache the result for components to learn update available without having to have called this method
|
// 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()
|
).toPromise()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { combineLatest, EMPTY, iif, Observable, of } from 'rxjs'
|
|||||||
import { concatMap, filter, take } from 'rxjs/operators'
|
import { concatMap, filter, take } from 'rxjs/operators'
|
||||||
import { OSWelcomePage } from '../modals/os-welcome/os-welcome.page'
|
import { OSWelcomePage } from '../modals/os-welcome/os-welcome.page'
|
||||||
import { ServerModel } from '../models/server-model'
|
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 { ApiService } from './api/api.service'
|
||||||
import { ConfigService } from './config.service'
|
import { ConfigService } from './config.service'
|
||||||
import { LoaderService } from './loader.service'
|
import { LoaderService } from './loader.service'
|
||||||
@@ -25,8 +25,8 @@ export class GlobalAlertsNotifier {
|
|||||||
}
|
}
|
||||||
|
|
||||||
init () {
|
init () {
|
||||||
of({ }).pipe(
|
console.log('init')
|
||||||
concatMap(() => this.osWelcome$()),
|
this.osWelcome$().pipe(
|
||||||
concatMap(() => this.autoUpdateCheck$()),
|
concatMap(() => this.autoUpdateCheck$()),
|
||||||
).subscribe()
|
).subscribe()
|
||||||
}
|
}
|
||||||
@@ -35,10 +35,11 @@ export class GlobalAlertsNotifier {
|
|||||||
const { welcomeAck, versionInstalled } = this.server.watch()
|
const { welcomeAck, versionInstalled } = this.server.watch()
|
||||||
|
|
||||||
return combineLatest([ welcomeAck, versionInstalled ]).pipe(
|
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
|
take(1), // we will check and show welcome message at most once per app instance
|
||||||
concatMap(([_, vi]) => iif(
|
concatMap(([wa, vi]) => iif(
|
||||||
() => vi === this.config.version,
|
() => !wa && vi === this.config.version,
|
||||||
this.presentOsWelcome(vi),
|
this.presentOsWelcome(vi),
|
||||||
EMPTY,
|
EMPTY,
|
||||||
)),
|
)),
|
||||||
@@ -48,6 +49,7 @@ export class GlobalAlertsNotifier {
|
|||||||
private autoUpdateCheck$ (): Observable<void> {
|
private autoUpdateCheck$ (): Observable<void> {
|
||||||
// this emits iff autoCheck is on and update available
|
// this emits iff autoCheck is on and update available
|
||||||
return this.osUpdateService.autoCheck$().pipe(
|
return this.osUpdateService.autoCheck$().pipe(
|
||||||
|
traceWheel('autoUpdateCheck'),
|
||||||
filter(exists),
|
filter(exists),
|
||||||
concatMap(async vl => {
|
concatMap(async vl => {
|
||||||
const { update } = await this.presentAlertNewOS(vl)
|
const { update } = await this.presentAlertNewOS(vl)
|
||||||
|
|||||||
Reference in New Issue
Block a user