src/reducers/globalUI.js
import { Map } from 'immutable';
import { TOGGLE_SIDEBAR, OPEN_SIDEBAR } from '../actions/globalUI';
/*
* Reducer for some global UI state that we want to share between components
* */
const globalUI = (state = Map({ isFetching: false, sidebarIsOpen: true }), action) => {
// Generic, global loading indicator
if ((action.type.indexOf('REQUEST') > -1)) {
return state.set('isFetching', true);
} else if (
(action.type.indexOf('SUCCESS') > -1) ||
(action.type.indexOf('FAILURE') > -1)
) {
return state.set('isFetching', false);
}
switch (action.type) {
case TOGGLE_SIDEBAR:
return state.set('sidebarIsOpen', !state.get('sidebarIsOpen'));
case OPEN_SIDEBAR:
return state.set('sidebarIsOpen', action.payload.open);
default:
return state;
}
};
export default globalUI;