From f32e6b21eacd6022a2c8639c0f56f56d988da0c2 Mon Sep 17 00:00:00 2001 From: Alexey Padalko Date: Wed, 10 Apr 2019 14:43:16 +0300 Subject: [PATCH] fix(onboarding): prevent state update during render --- renderer/components/Onboarding/Onboarding.js | 9 ++++++--- renderer/components/Onboarding/Steps/Network.js | 14 +++++++++++--- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/renderer/components/Onboarding/Onboarding.js b/renderer/components/Onboarding/Onboarding.js index e5dc602ab15..8ec6e1b44f8 100644 --- a/renderer/components/Onboarding/Onboarding.js +++ b/renderer/components/Onboarding/Onboarding.js @@ -80,13 +80,12 @@ class Onboarding extends React.Component { * @return {{key: string}[]} Modified list of form steps. */ removeAutopilotStepIfMainnet = formSteps => { - const { network, setAutopilot } = this.props + const { network } = this.props if (network === 'mainnet') { const index = formSteps.findIndex(s => s.key === 'Autopilot') if (index >= 0) { formSteps.splice(index, 1) } - setAutopilot(false) } return formSteps } @@ -158,7 +157,11 @@ class Onboarding extends React.Component { , , , - , + , , , ] diff --git a/renderer/components/Onboarding/Steps/Network.js b/renderer/components/Onboarding/Steps/Network.js index 3b3ea7535f6..1c26b74b956 100644 --- a/renderer/components/Onboarding/Steps/Network.js +++ b/renderer/components/Onboarding/Steps/Network.js @@ -7,6 +7,7 @@ import messages from './messages' class Network extends React.Component { static propTypes = { network: PropTypes.string, // eslint-disable-line react/boolean-prop-naming + setAutopilot: PropTypes.func.isRequired, setNetwork: PropTypes.func.isRequired, wizardApi: PropTypes.object, wizardState: PropTypes.object, @@ -18,8 +19,15 @@ class Network extends React.Component { } handleSubmit = values => { - const { setNetwork } = this.props - setNetwork(values.network) + const { setNetwork, setAutopilot } = this.props + const { network } = values + setNetwork(network) + + // It is currently not recommended to use autopilot on mainnet. + // If user has selected mainnet, disable it + if (network === 'mainnet') { + setAutopilot(false) + } } setFormApi = formApi => { @@ -27,7 +35,7 @@ class Network extends React.Component { } render() { - const { wizardApi, wizardState, network, setNetwork, ...rest } = this.props + const { wizardApi, wizardState, network, setNetwork, setAutopilot, ...rest } = this.props const { getApi, onChange, onSubmit, onSubmitFailure } = wizardApi const { currentItem } = wizardState return (