mirror of
https://github.com/strapi/strapi.git
synced 2025-08-02 13:58:18 +00:00
53 lines
1.4 KiB
JavaScript
53 lines
1.4 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 { combineReducers } from 'redux-immutable';
|
|
import { fromJS } from 'immutable';
|
|
import { LOCATION_CHANGE } from 'react-router-redux';
|
|
import appReducer from 'containers/App/reducer';
|
|
import languageProviderReducer from 'containers/LanguageProvider/reducer';
|
|
import notificationProviderReducer from 'containers/NotificationProvider/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,
|
|
language: languageProviderReducer,
|
|
notification: notificationProviderReducer,
|
|
app: appReducer,
|
|
...asyncReducers,
|
|
});
|
|
}
|