From e13299893014f3f1990f004e61ebbaaef84b9d0c Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Tue, 28 Apr 2020 09:50:04 -0300 Subject: [PATCH] Return a Promise from `setProviderType` thunk (#8436) `setProviderType` returned a thunk that didn't return a Promise, despite doing async work. It now returns a Promise. None of the callers of this action creator needed to know when it completed, so no changes to the call sites were made. --- test/unit/ui/app/actions.spec.js | 17 ++++++++--------- ui/app/store/actions.js | 21 +++++++++++---------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/test/unit/ui/app/actions.spec.js b/test/unit/ui/app/actions.spec.js index 32265450f..c13c226f3 100644 --- a/test/unit/ui/app/actions.spec.js +++ b/test/unit/ui/app/actions.spec.js @@ -1076,28 +1076,27 @@ describe('Actions', function () { beforeEach(function () { store = mockStore({ metamask: { provider: {} } }) - setProviderTypeSpy = sinon.stub(background, 'setProviderType') }) afterEach(function () { setProviderTypeSpy.restore() }) - it('calls setProviderType', function () { - store.dispatch(actions.setProviderType()) + it('calls setProviderType', async function () { + setProviderTypeSpy = sinon.stub(background, 'setProviderType') + .callsArgWith(1, null) + await store.dispatch(actions.setProviderType()) assert(setProviderTypeSpy.calledOnce) }) - it('displays warning when setProviderType throws', function () { + it('displays warning when setProviderType throws', async function () { + setProviderTypeSpy = sinon.stub(background, 'setProviderType') + .callsArgWith(1, new Error('error')) const expectedActions = [ { type: 'DISPLAY_WARNING', value: 'Had a problem changing networks!' }, ] - setProviderTypeSpy.callsFake((_, callback) => { - callback(new Error('error')) - }) - - store.dispatch(actions.setProviderType()) + await store.dispatch(actions.setProviderType()) assert(setProviderTypeSpy.calledOnce) assert.deepEqual(store.getActions(), expectedActions) }) diff --git a/ui/app/store/actions.js b/ui/app/store/actions.js index 66f2ed2af..afcdbc274 100644 --- a/ui/app/store/actions.js +++ b/ui/app/store/actions.js @@ -1402,19 +1402,20 @@ export function createRetryTransaction (txId, customGasPrice, customGasLimit) { // export function setProviderType (type) { - return (dispatch, getState) => { + return async (dispatch, getState) => { const { type: currentProviderType } = getState().metamask.provider log.debug(`background.setProviderType`, type) - background.setProviderType(type, (err) => { - if (err) { - log.error(err) - return dispatch(displayWarning('Had a problem changing networks!')) - } - dispatch(setPreviousProvider(currentProviderType)) - dispatch(updateProviderType(type)) - dispatch(setSelectedToken()) - }) + try { + await promisifiedBackground.setProviderType(type) + } catch (error) { + log.error(error) + dispatch(displayWarning('Had a problem changing networks!')) + return + } + dispatch(setPreviousProvider(currentProviderType)) + dispatch(updateProviderType(type)) + dispatch(setSelectedToken()) } }