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.
feature/default_network_editable
Mark Stacey 5 years ago
parent 46d72d17a9
commit e7fbdd1be6
  1. 20
      test/unit/ui/app/actions.spec.js
  2. 14
      ui/app/store/actions.js

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

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

Loading…
Cancel
Save