diff --git a/source/actions/actions.js b/source/actions/actions.js index 6f330e6237..4b72f2cacc 100644 --- a/source/actions/actions.js +++ b/source/actions/actions.js @@ -67,6 +67,13 @@ export const updateSituation = (fieldName, value) => ({ value }) +export const updatePeriod = toPeriod => (dispatch, getState) => + dispatch({ + type: 'UPDATE_PERIOD', + rules: getState().rules, + toPeriod + }) + // $FlowFixMe export function setExample(name, situation, dottedName) { return { type: 'SET_EXAMPLE', name, situation, dottedName } diff --git a/source/components/PeriodSwitch.js b/source/components/PeriodSwitch.js index e0225cc412..34bba977d8 100644 --- a/source/components/PeriodSwitch.js +++ b/source/components/PeriodSwitch.js @@ -1,3 +1,4 @@ +import { updatePeriod } from 'Actions/actions' import React from 'react' import { Trans } from 'react-i18next' import { useDispatch, useSelector } from 'react-redux' @@ -12,10 +13,9 @@ export default function PeriodSwitch() { ) const currentPeriod = situation.période let periods = ['année', 'mois'] - const updatePeriod = toPeriod => dispatch({ type: 'UPDATE_PERIOD', toPeriod }) if (!currentPeriod) { - updatePeriod(defaultPeriod) + dispatch(updatePeriod(defaultPeriod)) } return ( @@ -27,7 +27,7 @@ export default function PeriodSwitch() { name="période" type="radio" value={period} - onChange={() => updatePeriod(period)} + onChange={() => dispatch(updatePeriod(period))} checked={currentPeriod === period} /> diff --git a/source/reducers/rootReducer.js b/source/reducers/rootReducer.js index a5cc2cd370..c014935ed1 100644 --- a/source/reducers/rootReducer.js +++ b/source/reducers/rootReducer.js @@ -201,26 +201,20 @@ const existingCompanyReducer = (state, action) => { } return newState } -export default (state, action) => { - // Enrich the action - if (action.type === 'UPDATE_PERIOD') { - action.rules = state.rules - } - return reduceReducers( - existingCompanyReducer, - storageReducer, - combineReducers({ - sessionId: defaultTo(Math.floor(Math.random() * 1000000000000) + ''), - conversationSteps, - lang, - rules: defaultTo(null), - simulation, - explainedVariable, - previousSimulation: defaultTo(null), - currentExample, - situationBranch, - activeTargetInput, - inFranceApp: inFranceAppReducer - }) - )(state, action) -} +export default reduceReducers( + existingCompanyReducer, + storageReducer, + combineReducers({ + sessionId: defaultTo(Math.floor(Math.random() * 1000000000000) + ''), + conversationSteps, + lang, + rules: defaultTo(null), + simulation, + explainedVariable, + previousSimulation: defaultTo(null), + currentExample, + situationBranch, + activeTargetInput, + inFranceApp: inFranceAppReducer + }) +)