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

Use async/await in action creators that force update state (#8421)

The action creators that use `forceUpdateMetamaskState` without
awaiting that task's completion have been updated to use `async/await`.
This was done in preparation for `await`-ing the completion of
`forceUpdateMetamaskState`, which will be done in a subsequent PR.
This commit is contained in:
Mark Stacey 2020-04-27 16:03:25 -03:00 committed by GitHub
parent eb06394dd9
commit b4c6c11267
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -304,86 +304,79 @@ export function importNewAccount (strategy, args) {
export function addNewAccount () {
log.debug(`background.addNewAccount`)
return (dispatch, getState) => {
return async (dispatch, getState) => {
const oldIdentities = getState().metamask.identities
dispatch(showLoadingIndication())
return new Promise((resolve, reject) => {
background.addNewAccount((err, { identities: newIdentities }) => {
if (err) {
dispatch(displayWarning(err.message))
return reject(err)
let newIdentities
try {
const { identities } = await promisifiedBackground.addNewAccount()
newIdentities = identities
} catch (error) {
dispatch(displayWarning(error.message))
throw error
}
const newAccountAddress = Object.keys(newIdentities).find((address) => !oldIdentities[address])
dispatch(hideLoadingIndication())
forceUpdateMetamaskState(dispatch)
return resolve(newAccountAddress)
})
})
return newAccountAddress
}
}
export function checkHardwareStatus (deviceName, hdPath) {
log.debug(`background.checkHardwareStatus`, deviceName, hdPath)
return (dispatch) => {
return async (dispatch) => {
dispatch(showLoadingIndication())
return new Promise((resolve, reject) => {
background.checkHardwareStatus(deviceName, hdPath, (err, unlocked) => {
if (err) {
log.error(err)
dispatch(displayWarning(err.message))
return reject(err)
let unlocked
try {
unlocked = await promisifiedBackground.checkHardwareStatus(deviceName, hdPath)
} catch (error) {
log.error(error)
dispatch(displayWarning(error.message))
throw error
}
dispatch(hideLoadingIndication())
forceUpdateMetamaskState(dispatch)
return resolve(unlocked)
})
})
return unlocked
}
}
export function forgetDevice (deviceName) {
log.debug(`background.forgetDevice`, deviceName)
return (dispatch) => {
return async (dispatch) => {
dispatch(showLoadingIndication())
return new Promise((resolve, reject) => {
background.forgetDevice(deviceName, (err) => {
if (err) {
log.error(err)
dispatch(displayWarning(err.message))
return reject(err)
try {
await promisifiedBackground.forgetDevice(deviceName)
} catch (error) {
log.error(error)
dispatch(displayWarning(error.message))
throw error
}
dispatch(hideLoadingIndication())
forceUpdateMetamaskState(dispatch)
return resolve()
})
})
}
}
export function connectHardware (deviceName, page, hdPath) {
log.debug(`background.connectHardware`, deviceName, page, hdPath)
return (dispatch) => {
return async (dispatch) => {
dispatch(showLoadingIndication())
return new Promise((resolve, reject) => {
background.connectHardware(deviceName, page, hdPath, (err, accounts) => {
if (err) {
log.error(err)
dispatch(displayWarning(err.message))
return reject(err)
let accounts
try {
accounts = await promisifiedBackground.connectHardware(deviceName, page, hdPath)
} catch (error) {
log.error(error)
dispatch(displayWarning(error.message))
throw error
}
dispatch(hideLoadingIndication())
forceUpdateMetamaskState(dispatch)
return resolve(accounts)
})
})
return accounts
}
}