diff --git a/source/actions/actions.js b/source/actions/actions.js index 6f330e623..1fe6bf54a 100644 --- a/source/actions/actions.js +++ b/source/actions/actions.js @@ -67,6 +67,11 @@ export const updateSituation = (fieldName, value) => ({ value }) +export const updatePeriod = toPeriod => ({ + type: 'UPDATE_PERIOD', + 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 e0225cc41..34bba977d 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 a5cc2cd37..de2612ee3 100644 --- a/source/reducers/rootReducer.js +++ b/source/reducers/rootReducer.js @@ -135,7 +135,7 @@ function updatePeriod(situation, { toPeriod, rules }) { } } -function simulation(state = null, action) { +function simulation(state = null, action, rules) { if (action.type === 'SET_SIMULATION') { const { config, url } = action return { config, url, hiddenControls: [], situation: {} } @@ -162,7 +162,7 @@ function simulation(state = null, action) { ...state, situation: updatePeriod(state.situation, { toPeriod: action.toPeriod, - rules: action.rules + rules: rules }) } } @@ -201,26 +201,23 @@ 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, + +export default reduceReducers( + existingCompanyReducer, + storageReducer, + (state, action) => combineReducers({ sessionId: defaultTo(Math.floor(Math.random() * 1000000000000) + ''), conversationSteps, lang, rules: defaultTo(null), - simulation, explainedVariable, + // We need to access the `rules` in the simulation reducer + simulation: (a, b) => simulation(a, b, state.rules), previousSimulation: defaultTo(null), currentExample, situationBranch, activeTargetInput, inFranceApp: inFranceAppReducer - }) - )(state, action) -} + })(state, action) +)