1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-10-22 19:26:13 +02:00

Fix race condition with publicConfigStore

This commit is contained in:
bitpshr 2018-10-23 13:19:01 -04:00 committed by Dan Finlay
parent 32630b68df
commit f35466a247

View File

@ -40,14 +40,33 @@ inpageProvider.enable = function () {
if (typeof detail.error !== 'undefined') { if (typeof detail.error !== 'undefined') {
reject(detail.error) reject(detail.error)
} else { } else {
inpageProvider.sendAsync({ method: 'eth_accounts', params: [] }, (error, response) => { const publicConfig = new Promise((resolve) => {
if (error) { const { selectedAddress } = inpageProvider.publicConfigStore.getState()
reject(error) if (selectedAddress) {
resolve()
} else { } else {
isEnabled = true inpageProvider.publicConfigStore.on('update', ({ selectedAddress }) => {
resolve(response.result) selectedAddress && resolve()
})
} }
}) })
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]) => {
isEnabled = true
resolve(selectedAddress)
})
.catch(reject)
} }
}) })
window.postMessage({ type: 'ETHEREUM_ENABLE_PROVIDER' }, '*') window.postMessage({ type: 'ETHEREUM_ENABLE_PROVIDER' }, '*')