@react-native-community/netinfo
Version:
React Native Network Info API for iOS & Android
2 lines • 1.73 kB
JavaScript
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.add=add;exports.remove=remove;exports.clear=clear;exports.default=void 0;var _subscriptions2=_interopRequireDefault(require("./subscriptions"));var _nativeInterface=_interopRequireDefault(require("./nativeInterface"));var _deprecatedUtils=_interopRequireDefault(require("./deprecatedUtils"));var _subscriptions=new Set();var _latestState=null;var _isListening=false;function _listenerHandler(state){_latestState=_deprecatedUtils.default.convertState(state);for(var _iterator=_subscriptions,_isArray=Array.isArray(_iterator),_i=0,_iterator=_isArray?_iterator:_iterator[typeof Symbol==="function"?Symbol.iterator:"@@iterator"]();;){var _ref;if(_isArray){if(_i>=_iterator.length)break;_ref=_iterator[_i++];}else{_i=_iterator.next();if(_i.done)break;_ref=_i.value;}var _handler=_ref;_handler(_latestState);}}function add(handler){_subscriptions.add(handler);if(_latestState){handler(_latestState);}else{_nativeInterface.default.getCurrentState().then(function(state){_latestState=_deprecatedUtils.default.convertState(state);handler(_latestState);});}if(_subscriptions.size>0&&!_isListening){_subscriptions2.default.add(_listenerHandler,false);_isListening=true;}}function remove(handler){_subscriptions.delete(handler);if(_subscriptions.size===0&&_isListening){_subscriptions2.default.remove(_listenerHandler);_isListening=false;}}function clear(){_subscriptions.clear();if(_isListening){_subscriptions2.default.remove(_listenerHandler);_isListening=false;}}var _default={add:add,remove:remove,clear:clear};exports.default=_default;
//# sourceMappingURL=deprecatedSubscriptions.js.map