Skip to content

Commit

Permalink
Ajout d'un paramètre explicite "rules" au reducer
Browse files Browse the repository at this point in the history
  • Loading branch information
mquandalle committed Sep 23, 2019
1 parent 7a965e6 commit da077aa
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 28 deletions.
5 changes: 5 additions & 0 deletions source/actions/actions.js
Expand Up @@ -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 }
Expand Down
6 changes: 3 additions & 3 deletions 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'
Expand All @@ -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 (
Expand All @@ -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}
/>
<span>
Expand Down
52 changes: 27 additions & 25 deletions source/reducers/rootReducer.js
Expand Up @@ -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: {} }
Expand All @@ -162,7 +162,7 @@ function simulation(state = null, action) {
...state,
situation: updatePeriod(state.situation, {
toPeriod: action.toPeriod,
rules: action.rules
rules: rules
})
}
}
Expand Down Expand Up @@ -201,26 +201,28 @@ 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)
}

// We need to access the `rules` in the simulation reducer, so we can't call it from the
// global combineReducers below.
const simulationReducer = (state = null, action) => ({
...state,
simulation: simulation(state.simulation, action, state.rules)
})

export default reduceReducers(
existingCompanyReducer,
storageReducer,
simulationReducer,
combineReducers({
sessionId: defaultTo(Math.floor(Math.random() * 1000000000000) + ''),
conversationSteps,
lang,
rules: defaultTo(null),
explainedVariable,
previousSimulation: defaultTo(null),
currentExample,
situationBranch,
activeTargetInput,
inFranceApp: inFranceAppReducer
})
)

0 comments on commit da077aa

Please sign in to comment.