Skip to content

Commit 0a95edf

Browse files
committed
[ReactNative] use Map, not Object when functions are keys
1 parent 1a12b95 commit 0a95edf

1 file changed

Lines changed: 8 additions & 9 deletions

File tree

Libraries/LinkingIOS/LinkingIOS.js

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@
1313

1414
var RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');
1515
var RCTLinkingManager = require('NativeModules').LinkingManager;
16+
var Map = require('Map');
1617
var invariant = require('invariant');
1718

18-
var _notifHandlers = {};
19+
var _notifHandlers = new Map();
1920
var _initialURL = RCTLinkingManager &&
2021
RCTLinkingManager.initialURL;
2122

@@ -80,10 +81,6 @@ var DEVICE_NOTIF_EVENT = 'openURL';
8081
* }
8182
* });
8283
* ```
83-
*
84-
* _The iOS simulator does not support the `mailto:` and `tel:` schemas
85-
* because the Mail and Phone apps are not installed - you will need to test
86-
* them on a device._
8784
*/
8885
class LinkingIOS {
8986
/**
@@ -95,10 +92,11 @@ class LinkingIOS {
9592
type === 'url',
9693
'LinkingIOS only supports `url` events'
9794
);
98-
_notifHandlers[handler] = RCTDeviceEventEmitter.addListener(
95+
var listener = RCTDeviceEventEmitter.addListener(
9996
DEVICE_NOTIF_EVENT,
10097
handler
10198
);
99+
_notifHandlers.set(handler, listener);
102100
}
103101

104102
/**
@@ -109,11 +107,12 @@ class LinkingIOS {
109107
type === 'url',
110108
'LinkingIOS only supports `url` events'
111109
);
112-
if (!_notifHandlers[handler]) {
110+
var listener = _notifHandlers.get(handler);
111+
if (!listener) {
113112
return;
114113
}
115-
_notifHandlers[handler].remove();
116-
_notifHandlers[handler] = null;
114+
listener.remove();
115+
_notifHandlers.delete(handler);
117116
}
118117

119118
/**

0 commit comments

Comments
 (0)