Merge pull request #2155 from MetaMask/filter-fixes-moar
Various fixes you've been waiting for, how exciting!feature/default_network_editable
commit
828dbd7e3f
@ -0,0 +1,31 @@ |
|||||||
|
module.exports = function createEventEmitterProxy(eventEmitter, listeners) { |
||||||
|
let target = eventEmitter |
||||||
|
const eventHandlers = listeners || {} |
||||||
|
const proxy = new Proxy({}, { |
||||||
|
get: (obj, name) => { |
||||||
|
// intercept listeners
|
||||||
|
if (name === 'on') return addListener |
||||||
|
if (name === 'setTarget') return setTarget |
||||||
|
if (name === 'proxyEventHandlers') return eventHandlers |
||||||
|
return target[name] |
||||||
|
}, |
||||||
|
set: (obj, name, value) => { |
||||||
|
target[name] = value |
||||||
|
return true |
||||||
|
}, |
||||||
|
}) |
||||||
|
function setTarget (eventEmitter) { |
||||||
|
target = eventEmitter |
||||||
|
// migrate listeners
|
||||||
|
Object.keys(eventHandlers).forEach((name) => { |
||||||
|
eventHandlers[name].forEach((handler) => target.on(name, handler)) |
||||||
|
}) |
||||||
|
} |
||||||
|
function addListener (name, handler) { |
||||||
|
if (!eventHandlers[name]) eventHandlers[name] = [] |
||||||
|
eventHandlers[name].push(handler) |
||||||
|
target.on(name, handler) |
||||||
|
} |
||||||
|
if (listeners) proxy.setTarget(eventEmitter) |
||||||
|
return proxy |
||||||
|
} |
Loading…
Reference in new issue