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

Return Promise from setRpcTarget

`setRpcTarget` returned a thunk that didn't return a Promise, despite
doing async work. It now returns a Promise.

The callers of this action creator didn't need to be updated, as they
were all in event handlers that didn't require knowing when the
operation had completed.
This commit is contained in:
Mark Stacey 2020-04-24 09:59:13 -03:00
parent 46d72d17a9
commit e7fbdd1be6
2 changed files with 18 additions and 20 deletions

View File

@ -1105,31 +1105,27 @@ describe('Actions', function () {
describe('#setRpcTarget', function () {
let setRpcTargetSpy
beforeEach(function () {
setRpcTargetSpy = sinon.stub(background, 'setCustomRpc')
})
afterEach(function () {
setRpcTargetSpy.restore()
})
it('calls setRpcTarget', function () {
it('calls setRpcTarget', async function () {
setRpcTargetSpy = sinon.stub(background, 'setCustomRpc')
.callsArgWith(4, null)
const store = mockStore()
store.dispatch(actions.setRpcTarget('http://localhost:8545'))
await store.dispatch(actions.setRpcTarget('http://localhost:8545'))
assert(setRpcTargetSpy.calledOnce)
})
it('displays warning when setRpcTarget throws', function () {
it('displays warning when setRpcTarget throws', async function () {
setRpcTargetSpy = sinon.stub(background, 'setCustomRpc')
.callsArgWith(4, new Error('error'))
const store = mockStore()
const expectedActions = [
{ type: 'DISPLAY_WARNING', value: 'Had a problem changing networks!' },
]
setRpcTargetSpy.callsFake((_, __, ___, ____, callback) => {
callback(new Error('error'))
})
store.dispatch(actions.setRpcTarget())
await store.dispatch(actions.setRpcTarget())
assert.deepEqual(store.getActions(), expectedActions)
})
})

View File

@ -1484,15 +1484,17 @@ export function editRpc (oldRpc, newRpc, chainId, ticker = 'ETH', nickname, rpcP
}
export function setRpcTarget (newRpc, chainId, ticker = 'ETH', nickname) {
return (dispatch) => {
return async (dispatch) => {
log.debug(`background.setRpcTarget: ${newRpc} ${chainId} ${ticker} ${nickname}`)
background.setCustomRpc(newRpc, chainId, ticker, nickname || newRpc, (err) => {
if (err) {
log.error(err)
return dispatch(displayWarning('Had a problem changing networks!'))
}
dispatch(setSelectedToken())
})
try {
await promisifiedBackground.setCustomRpc(newRpc, chainId, ticker, nickname || newRpc)
} catch (error) {
log.error(error)
dispatch(displayWarning('Had a problem changing networks!'))
return
}
dispatch(setSelectedToken())
}
}