From 29b64519ab056f3ccdc716258b257c156dce566d Mon Sep 17 00:00:00 2001 From: Sal Hernandez Date: Tue, 1 Aug 2017 18:49:30 -0400 Subject: [PATCH 1/2] add 'removeListener' method to have a way to remove the NFC listener --- index.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index 886b433..cfe1b1f 100644 --- a/index.js +++ b/index.js @@ -13,14 +13,14 @@ export const NdefRecordType = { MIME : "MIME" }; - +const NFC_DISCOVERED = '__NFC_DISCOVERED'; let _registeredToEvents = false; const _listeners = []; let _registerToEvents = () => { if(!_registeredToEvents){ NativeModules.ReactNativeNFC.getStartUpNfcData(_notifyListeners); - DeviceEventEmitter.addListener('__NFC_DISCOVERED', _notifyListeners); + DeviceEventEmitter.addListener(NFC_DISCOVERED, _notifyListeners); _registeredToEvents = true; } }; @@ -40,4 +40,9 @@ NFC.addListener = (callback) => { _registerToEvents(); }; -export default NFC; \ No newline at end of file +NFC.removeListener = () => { + DeviceEventEmitter.removeListener(NFC_DISCOVERED); + _listeners.splice(0, _listeners.length); + _registeredToEvents = false; +}; +export default NFC; From 61ebbba78a9f825704ecb01d41c4d0a150d28958 Mon Sep 17 00:00:00 2001 From: Sal Hernandez Date: Tue, 8 Aug 2017 02:09:35 -0400 Subject: [PATCH 2/2] implement a way to be able to remove a specified listener, add removeAllListeners method --- index.js | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/index.js b/index.js index cfe1b1f..27eb749 100644 --- a/index.js +++ b/index.js @@ -15,7 +15,7 @@ export const NdefRecordType = { const NFC_DISCOVERED = '__NFC_DISCOVERED'; let _registeredToEvents = false; -const _listeners = []; +let _listeners = {}; let _registerToEvents = () => { if(!_registeredToEvents){ @@ -27,22 +27,27 @@ let _registerToEvents = () => { let _notifyListeners = (data) => { if(data){ - for(let i in _listeners){ - _listeners[i](data); + for(let _listener in _listeners){ + _listeners[_listener](data); } } }; const NFC = {}; -NFC.addListener = (callback) => { - _listeners.push(callback); +NFC.addListener = (name, callback) => { + _listeners[name] = callback; _registerToEvents(); }; -NFC.removeListener = () => { - DeviceEventEmitter.removeListener(NFC_DISCOVERED); - _listeners.splice(0, _listeners.length); +NFC.removeListener = (name) => { + delete _listeners[name]; +}; + +NFC.removeAllListeners = () => { + DeviceEventEmitter.removeAllListeners(NFC_DISCOVERED); + _listeners = {}; _registeredToEvents = false; }; -export default NFC; + +export default NFC; \ No newline at end of file