UNPKG

@igo2/core

Version:
75 lines (71 loc) 2.95 kB
import * as i0 from '@angular/core'; import { EventEmitter, Injectable } from '@angular/core'; import * as i1 from '@igo2/core/message'; import { fromEvent } from 'rxjs'; import { debounceTime, startWith } from 'rxjs/operators'; class NetworkService { messageService; injector; stateChangeEventEmitter = new EventEmitter(); onlineSubscription; offlineSubscription; previousMessageId; state = { connection: window.navigator.onLine }; constructor(messageService, injector) { this.messageService = messageService; this.injector = injector; this.checkNetworkState(); } checkNetworkState() { this.onlineSubscription = fromEvent(window, 'online').subscribe(() => { if (this.previousMessageId) { this.messageService.remove(this.previousMessageId); } const messageObj = this.messageService.info('igo.core.network.online.message', 'igo.core.network.online.title'); this.previousMessageId = messageObj.toastId; this.state.connection = true; this.emitEvent(); }); this.offlineSubscription = fromEvent(window, 'offline').subscribe(() => { if (this.previousMessageId) { this.messageService.remove(this.previousMessageId); } const messageObj = this.messageService.info('igo.core.network.offline.message', 'igo.core.network.offline.title'); this.previousMessageId = messageObj.toastId; this.state.connection = false; this.emitEvent(); }); } emitEvent() { this.stateChangeEventEmitter.emit(this.state); } ngOnDestroy() { try { this.offlineSubscription.unsubscribe(); this.onlineSubscription.unsubscribe(); } catch { // empty } } currentState(reportState = true) { return reportState ? this.stateChangeEventEmitter.pipe(debounceTime(300), startWith(this.state)) : this.stateChangeEventEmitter.pipe(debounceTime(300)); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: NetworkService, deps: [{ token: i1.MessageService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: NetworkService, providedIn: 'root' }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: NetworkService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.MessageService }, { type: i0.Injector }] }); /** * Generated bundle index. Do not edit. */ export { NetworkService }; //# sourceMappingURL=igo2-core-network.mjs.map