jiti-meet/react/features/base/net-info/NetworkInfoService.web.js

59 lines
1.5 KiB
JavaScript

import EventEmitter from 'events';
import { ONLINE_STATE_CHANGED_EVENT } from './events';
/**
* The network info service implementation for web (Chrome, Firefox and Safari).
*/
export default class NetworkInfoService extends EventEmitter {
/**
* Creates new instance...
*/
constructor() {
super();
this._onlineStateListener = this._handleOnlineStatusChange.bind(this, /* online */ true);
this._offlineStateListener = this._handleOnlineStatusChange.bind(this, /* offline */ false);
}
/**
* Callback function to track the online state.
*
* @param {boolean} isOnline - Is the browser online or not.
* @private
* @returns {void}
*/
_handleOnlineStatusChange(isOnline) {
this.emit(ONLINE_STATE_CHANGED_EVENT, { isOnline });
}
/**
* Checks for support.
*
* @returns {boolean}
*/
static isSupported() {
return window.addEventListener && typeof navigator.onLine !== 'undefined';
}
/**
* Starts the service.
*
* @returns {void}
*/
start() {
window.addEventListener('online', this._onlineStateListener);
window.addEventListener('offline', this._offlineStateListener);
}
/**
* Stops the service.
*
* @returns {void}
*/
stop() {
window.removeEventListener('online', this._onlineStateListener);
window.removeEventListener('offline', this._offlineStateListener);
}
}