@react-native-community/netinfo
Version:
React Native Network Info API for iOS & Android
2 lines • 2.43 kB
JavaScript
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.setup=setup;exports.tearDown=tearDown;exports.latest=latest;exports.add=add;exports.remove=remove;exports.default=void 0;var _objectSpread2=_interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));var _nativeInterface=_interopRequireDefault(require("./nativeInterface"));var _internetReachability=_interopRequireDefault(require("./internetReachability"));var _utils=_interopRequireDefault(require("./utils"));var DEVICE_CONNECTIVITY_EVENT='netInfo.networkStatusDidChange';var _isSetup=false;var _nativeEventSubscription=null;var _internetReachabilitySubscription=null;var _subscriptions=new Set();var _latestState=null;function fetchCurrentState(){return _utils.default.currentState().then(function(state){_internetReachability.default.update(state);var convertedState=_utils.default.convertState(state);_latestState=convertedState;return convertedState;});}function setup(){if(_isSetup){return;}_nativeEventSubscription=_nativeInterface.default.eventEmitter.addListener(DEVICE_CONNECTIVITY_EVENT,function(state){_internetReachability.default.update(state);var convertedState=_utils.default.convertState(state);_latestState=convertedState;_subscriptions.forEach(function(handler){return handler(convertedState);});});fetchCurrentState();_internetReachabilitySubscription=_internetReachability.default.addSubscription(function(isInternetReachable){if(!_latestState){return;}var nextState=(0,_objectSpread2.default)({},_latestState,{isInternetReachable:isInternetReachable});_latestState=nextState;_subscriptions.forEach(function(handler){return handler(nextState);});});_isSetup=true;}function tearDown(){if(!_isSetup){return;}if(_nativeEventSubscription){_nativeEventSubscription.remove();}_subscriptions.clear();_internetReachability.default.clear();if(_internetReachabilitySubscription){_internetReachabilitySubscription();}_isSetup=false;}function latest(){if(_latestState){return Promise.resolve(_latestState);}else{return fetchCurrentState();}}function add(handler){_subscriptions.add(handler);if(_latestState){handler(_latestState);}else{latest().then(handler);}}function remove(handler){_subscriptions.delete(handler);}var _default={setup:setup,tearDown:tearDown,latest:latest,add:add,remove:remove};exports.default=_default;
//# sourceMappingURL=state.js.map