mirror of
https://github.com/strapi/strapi.git
synced 2025-08-03 14:28:40 +00:00
52 lines
1.3 KiB
JavaScript
52 lines
1.3 KiB
JavaScript
![]() |
/**
|
||
|
* Combine all reducers in this file and export the combined reducers.
|
||
|
* If we were to do this in store.js, reducers wouldn't be hot reloadable.
|
||
|
*/
|
||
|
|
||
|
import { fromJS } from 'immutable';
|
||
|
import { combineReducers } from 'redux-immutable';
|
||
|
import { LOCATION_CHANGE } from 'react-router-redux';
|
||
|
|
||
|
import globalReducer from 'containers/App/reducer';
|
||
|
import languageProviderReducer from 'containers/LanguageProvider/reducer';
|
||
|
|
||
|
/*
|
||
|
* routeReducer
|
||
|
*
|
||
|
* The reducer merges route location changes into our immutable state.
|
||
|
* The change is necessitated by moving to react-router-redux@4
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
// Initial routing state
|
||
|
const routeInitialState = fromJS({
|
||
|
locationBeforeTransitions: null,
|
||
|
});
|
||
|
|
||
|
/**
|
||
|
* Merge route into the global application state
|
||
|
*/
|
||
|
function routeReducer(state = routeInitialState, action) {
|
||
|
switch (action.type) {
|
||
|
/* istanbul ignore next */
|
||
|
case LOCATION_CHANGE:
|
||
|
return state.merge({
|
||
|
locationBeforeTransitions: action.payload,
|
||
|
});
|
||
|
default:
|
||
|
return state;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Creates the main reducer with the asynchronously loaded ones
|
||
|
*/
|
||
|
export default function createReducer(asyncReducers) {
|
||
|
return combineReducers({
|
||
|
route: routeReducer,
|
||
|
global: globalReducer,
|
||
|
language: languageProviderReducer,
|
||
|
...asyncReducers,
|
||
|
});
|
||
|
}
|