|
11 | 11 | */ |
12 | 12 | 'use strict'; |
13 | 13 |
|
| 14 | +var Map = require('Map'); |
14 | 15 | var NativeModules = require('NativeModules'); |
15 | 16 | var Platform = require('Platform'); |
16 | 17 | var RCTDeviceEventEmitter = require('RCTDeviceEventEmitter'); |
@@ -140,30 +141,32 @@ type ConnectivityStateAndroid = $Enum<{ |
140 | 141 | * ``` |
141 | 142 | */ |
142 | 143 |
|
143 | | -var _subscriptions = {}; |
| 144 | +var _subscriptions = new Map(); |
144 | 145 |
|
145 | 146 | var NetInfo = { |
146 | 147 | addEventListener: function ( |
147 | 148 | eventName: ChangeEventName, |
148 | 149 | handler: Function |
149 | 150 | ): void { |
150 | | - _subscriptions[String(handler)] = RCTDeviceEventEmitter.addListener( |
| 151 | + var listener = RCTDeviceEventEmitter.addListener( |
151 | 152 | DEVICE_REACHABILITY_EVENT, |
152 | 153 | (appStateData) => { |
153 | 154 | handler(appStateData.network_reachability); |
154 | 155 | } |
155 | 156 | ); |
| 157 | + _subscriptions.set(handler, listener); |
156 | 158 | }, |
157 | 159 |
|
158 | 160 | removeEventListener: function( |
159 | 161 | eventName: ChangeEventName, |
160 | 162 | handler: Function |
161 | 163 | ): void { |
162 | | - if (!_subscriptions[String(handler)]) { |
| 164 | + var listener = _subscriptions.get(handler); |
| 165 | + if (!listener) { |
163 | 166 | return; |
164 | 167 | } |
165 | | - _subscriptions[String(handler)].remove(); |
166 | | - _subscriptions[String(handler)] = null; |
| 168 | + listener.remove(); |
| 169 | + _subscriptions.delete(handler); |
167 | 170 | }, |
168 | 171 |
|
169 | 172 | fetch: function(): Promise { |
@@ -197,30 +200,33 @@ if (Platform.OS === 'ios') { |
197 | 200 | }; |
198 | 201 | } |
199 | 202 |
|
200 | | -var _isConnectedSubscriptions = {}; |
| 203 | +var _isConnectedSubscriptions = new Map(); |
201 | 204 |
|
202 | 205 | NetInfo.isConnected = { |
203 | 206 | addEventListener: function ( |
204 | 207 | eventName: ChangeEventName, |
205 | 208 | handler: Function |
206 | 209 | ): void { |
207 | | - _isConnectedSubscriptions[String(handler)] = (connection) => { |
| 210 | + var listener = (connection) => { |
208 | 211 | handler(_isConnected(connection)); |
209 | 212 | }; |
| 213 | + _isConnectedSubscriptions.set(handler, listener); |
210 | 214 | NetInfo.addEventListener( |
211 | 215 | eventName, |
212 | | - _isConnectedSubscriptions[String(handler)] |
| 216 | + listener |
213 | 217 | ); |
214 | 218 | }, |
215 | 219 |
|
216 | 220 | removeEventListener: function( |
217 | 221 | eventName: ChangeEventName, |
218 | 222 | handler: Function |
219 | 223 | ): void { |
| 224 | + var listener = _isConnectedSubscriptions.get(handler); |
220 | 225 | NetInfo.removeEventListener( |
221 | 226 | eventName, |
222 | | - _isConnectedSubscriptions[String(handler)] |
| 227 | + listener |
223 | 228 | ); |
| 229 | + _isConnectedSubscriptions.delete(handler); |
224 | 230 | }, |
225 | 231 |
|
226 | 232 | fetch: function(): Promise { |
|
0 commit comments