1313
1414var RCTDeviceEventEmitter = require ( 'RCTDeviceEventEmitter' ) ;
1515var RCTLinkingManager = require ( 'NativeModules' ) . LinkingManager ;
16+ var Map = require ( 'Map' ) ;
1617var invariant = require ( 'invariant' ) ;
1718
18- var _notifHandlers = { } ;
19+ var _notifHandlers = new Map ( ) ;
1920var _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 */
8885class 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