34 lines
953 B
JavaScript

import { Map } from 'immutable';
import { USE_OPEN_AUTHORING } from 'Actions/auth';
const LOADING_IGNORE_LIST = [
'DEPLOY_PREVIEW',
'STATUS_REQUEST',
'STATUS_SUCCESS',
'STATUS_FAILURE',
];
function ignoreWhenLoading(action) {
return LOADING_IGNORE_LIST.some(type => action.type.includes(type));
}
/**
* Reducer for some global UI state that we want to share between components
*/
function globalUI(state = Map({ isFetching: false, useOpenAuthoring: false }), action) {
// Generic, global loading indicator
if (!ignoreWhenLoading(action) && action.type.includes('REQUEST')) {
return state.set('isFetching', true);
} else if (
!ignoreWhenLoading(action) &&
(action.type.includes('SUCCESS') || action.type.includes('FAILURE'))
) {
return state.set('isFetching', false);
} else if (action.type === USE_OPEN_AUTHORING) {
return state.set('useOpenAuthoring', true);
}
return state;
}
export default globalUI;