diff options
Diffstat (limited to 'app/scripts/inpage.js')
-rw-r--r-- | app/scripts/inpage.js | 44 |
1 files changed, 15 insertions, 29 deletions
diff --git a/app/scripts/inpage.js b/app/scripts/inpage.js index cfcf5e364..83392761e 100644 --- a/app/scripts/inpage.js +++ b/app/scripts/inpage.js @@ -56,45 +56,31 @@ inpageProvider.setMaxListeners(100) // set up a listener for when MetaMask is locked onMessage('metamasksetlocked', () => { isEnabled = false }) +// set up a listener for privacy mode responses +onMessage('ethereumproviderlegacy', ({ data: { selectedAddress } }) => { + isEnabled = true + inpageProvider.publicConfigStore.updateState({ selectedAddress }) +}, true) + // augment the provider with its enable method inpageProvider.enable = function ({ force } = {}) { return new Promise((resolve, reject) => { - providerHandle = ({ data: { error } }) => { + providerHandle = ({ data: { error, selectedAddress } }) => { if (typeof error !== 'undefined') { reject(error) } else { window.removeEventListener('message', providerHandle) - // wait for the publicConfig store to populate with an account - const publicConfig = new Promise((resolve) => { - const { selectedAddress } = inpageProvider.publicConfigStore.getState() - inpageProvider._metamask.isUnlocked().then(unlocked => { - if (!unlocked || selectedAddress) { - resolve() - } else { - inpageProvider.publicConfigStore.on('update', ({ selectedAddress }) => { - selectedAddress && resolve() - }) - } - }) - }) + inpageProvider.publicConfigStore.updateState({ selectedAddress }) // wait for the background to update with an account - const ethAccounts = new Promise((resolveAccounts, rejectAccounts) => { - inpageProvider.sendAsync({ method: 'eth_accounts', params: [] }, (error, response) => { - if (error) { - rejectAccounts(error) - } else { - resolveAccounts(response.result) - } - }) - }) - - Promise.all([ethAccounts, publicConfig]) - .then(([selectedAddress]) => { + inpageProvider.sendAsync({ method: 'eth_accounts', params: [] }, (error, response) => { + if (error) { + reject(error) + } else { isEnabled = true - resolve(selectedAddress) - }) - .catch(reject) + resolve(response.result) + } + }) } } onMessage('ethereumprovider', providerHandle, true) |