mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-31 04:23:40 +00:00
* wip * restructure backend for new ui structure * new patchdb bootstrap, single websocket api, local storage migration, more * update db websocket * init apis * update patch-db * setup progress * feat: implement state service, alert and routing Signed-off-by: waterplea <alexander@inkin.ru> * update setup wizard for new types * feat: add init page Signed-off-by: waterplea <alexander@inkin.ru> * chore: refactor message, patch-db source stream and connection service Signed-off-by: waterplea <alexander@inkin.ru> * fix method not found on state * fix backend bugs * fix compat assets * address comments * remove unneeded styling * cleaner progress * bugfixes * fix init logs * fix progress reporting * fix navigation by getting state after init * remove patch dependency from live api * fix caching * re-add patchDB to live api * fix metrics values * send close frame * add bootId and fix polling --------- Signed-off-by: waterplea <alexander@inkin.ru> Co-authored-by: Aiden McClelland <me@drbonez.dev> Co-authored-by: waterplea <alexander@inkin.ru>
23 lines
683 B
TypeScript
23 lines
683 B
TypeScript
import { inject, Injectable } from '@angular/core'
|
|
import { WINDOW } from '@ng-web-apis/common'
|
|
import { fromEvent, merge, Observable, shareReplay } from 'rxjs'
|
|
import { distinctUntilChanged, map, startWith } from 'rxjs/operators'
|
|
|
|
@Injectable({ providedIn: 'root' })
|
|
export class NetworkService extends Observable<boolean> {
|
|
private readonly win = inject(WINDOW)
|
|
private readonly stream$ = merge(
|
|
fromEvent(this.win, 'online'),
|
|
fromEvent(this.win, 'offline'),
|
|
).pipe(
|
|
startWith(null),
|
|
map(() => this.win.navigator.onLine),
|
|
distinctUntilChanged(),
|
|
shareReplay(1),
|
|
)
|
|
|
|
constructor() {
|
|
super(subscriber => this.stream$.subscribe(subscriber))
|
|
}
|
|
}
|