1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-23 02:10:12 +01:00

Remove internal listeners

This commit is contained in:
bitpshr 2018-10-30 00:09:21 +01:00 committed by Dan Finlay
parent cc27a09a1a
commit 72730b3929

View File

@ -8,6 +8,9 @@ const MetamaskInpageProvider = require('metamask-inpage-provider')
let isEnabled = false let isEnabled = false
let warned = false let warned = false
let providerHandle
let isApprovedHandle
let isUnlockedHandle
restoreContextAfterImports() restoreContextAfterImports()
@ -43,7 +46,8 @@ window.addEventListener('metamasksetlocked', () => {
// augment the provider with its enable method // augment the provider with its enable method
inpageProvider.enable = function () { inpageProvider.enable = function () {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
window.addEventListener('ethereumprovider', ({ detail }) => { window.removeEventListener('ethereumprovider', providerHandle)
providerHandle = ({ detail }) => {
if (typeof detail.error !== 'undefined') { if (typeof detail.error !== 'undefined') {
reject(detail.error) reject(detail.error)
} else { } else {
@ -79,7 +83,8 @@ inpageProvider.enable = function () {
}) })
.catch(reject) .catch(reject)
} }
}) }
window.addEventListener('ethereumprovider', providerHandle)
window.postMessage({ type: 'ETHEREUM_ENABLE_PROVIDER' }, '*') window.postMessage({ type: 'ETHEREUM_ENABLE_PROVIDER' }, '*')
}) })
} }
@ -102,7 +107,8 @@ inpageProvider._metamask = new Proxy({
*/ */
isApproved: function() { isApproved: function() {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
window.addEventListener('ethereumisapproved', ({ detail }) => { window.removeEventListener('ethereumisapproved', isApprovedHandle)
isApprovedHandle = ({ detail }) => {
if (typeof detail.error !== 'undefined') { if (typeof detail.error !== 'undefined') {
reject(detail.error) reject(detail.error)
} else { } else {
@ -112,7 +118,8 @@ inpageProvider._metamask = new Proxy({
resolve(isEnabled) resolve(isEnabled)
} }
} }
}) }
window.addEventListener('ethereumisapproved', isApprovedHandle)
window.postMessage({ type: 'ETHEREUM_IS_APPROVED' }, '*') window.postMessage({ type: 'ETHEREUM_IS_APPROVED' }, '*')
}) })
}, },
@ -124,13 +131,15 @@ inpageProvider._metamask = new Proxy({
*/ */
isUnlocked: function () { isUnlocked: function () {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
window.addEventListener('metamaskisunlocked', ({ detail }) => { window.removeEventListener('metamaskisunlocked', isUnlockedHandle)
isUnlockedHandle = ({ detail }) => {
if (typeof detail.error !== 'undefined') { if (typeof detail.error !== 'undefined') {
reject(detail.error) reject(detail.error)
} else { } else {
resolve(!!detail.isUnlocked) resolve(!!detail.isUnlocked)
} }
}) }
window.addEventListener('metamaskisunlocked', isUnlockedHandle)
window.postMessage({ type: 'METAMASK_IS_UNLOCKED' }, '*') window.postMessage({ type: 'METAMASK_IS_UNLOCKED' }, '*')
}) })
}, },