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:
parent
32630b68df
commit
f35466a247
@ -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' }, '*')
|
||||||
|
Loading…
Reference in New Issue
Block a user