@igo2/core
Version:
75 lines (71 loc) • 2.95 kB
JavaScript
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