mirror of
https://github.com/Unleash/unleash.git
synced 2025-05-12 01:17:04 +02:00
67 lines
2.2 KiB
JavaScript
67 lines
2.2 KiB
JavaScript
import { List, Map as $Map } from 'immutable';
|
|
import { MUTE_ERROR } from './error-actions';
|
|
import {
|
|
ERROR_FETCH_FEATURE_TOGGLES,
|
|
ERROR_CREATING_FEATURE_TOGGLE,
|
|
ERROR_REMOVE_FEATURE_TOGGLE,
|
|
ERROR_UPDATE_FEATURE_TOGGLE,
|
|
UPDATE_FEATURE_TOGGLE_STRATEGIES,
|
|
UPDATE_FEATURE_TOGGLE,
|
|
} from './feature-actions';
|
|
|
|
import { ERROR_UPDATING_STRATEGY, ERROR_CREATING_STRATEGY, ERROR_RECEIVE_STRATEGIES } from './strategy/actions';
|
|
|
|
import { ERROR_ADD_CONTEXT_FIELD, ERROR_UPDATE_CONTEXT_FIELD } from './context/actions';
|
|
|
|
import { ERROR_REMOVING_PROJECT, ERROR_ADD_PROJECT, ERROR_UPDATE_PROJECT } from './project/actions';
|
|
|
|
import { UPDATE_APPLICATION_FIELD } from './application/actions';
|
|
|
|
import { FORBIDDEN } from './util';
|
|
|
|
const debug = require('debug')('unleash:error-store');
|
|
|
|
function getInitState() {
|
|
return new $Map({
|
|
list: new List(),
|
|
});
|
|
}
|
|
|
|
function addErrorIfNotAlreadyInList(state, error) {
|
|
debug('Got error', error);
|
|
if (state.get('list').indexOf(error) < 0) {
|
|
return state.update('list', list => list.push(error));
|
|
}
|
|
return state;
|
|
}
|
|
|
|
const strategies = (state = getInitState(), action) => {
|
|
switch (action.type) {
|
|
case ERROR_CREATING_FEATURE_TOGGLE:
|
|
case ERROR_REMOVE_FEATURE_TOGGLE:
|
|
case ERROR_FETCH_FEATURE_TOGGLES:
|
|
case ERROR_UPDATE_FEATURE_TOGGLE:
|
|
case ERROR_UPDATING_STRATEGY:
|
|
case ERROR_CREATING_STRATEGY:
|
|
case ERROR_RECEIVE_STRATEGIES:
|
|
case ERROR_ADD_CONTEXT_FIELD:
|
|
case ERROR_UPDATE_CONTEXT_FIELD:
|
|
case ERROR_REMOVING_PROJECT:
|
|
case ERROR_UPDATE_PROJECT:
|
|
case ERROR_ADD_PROJECT:
|
|
return addErrorIfNotAlreadyInList(state, action.error.message);
|
|
case FORBIDDEN:
|
|
return addErrorIfNotAlreadyInList(state, action.error.message || '403 Forbidden');
|
|
case MUTE_ERROR:
|
|
return state.update('list', list => list.remove(list.indexOf(action.error)));
|
|
case UPDATE_FEATURE_TOGGLE:
|
|
case UPDATE_FEATURE_TOGGLE_STRATEGIES:
|
|
case UPDATE_APPLICATION_FIELD:
|
|
return addErrorIfNotAlreadyInList(state, action.info);
|
|
default:
|
|
return state;
|
|
}
|
|
};
|
|
|
|
export default strategies;
|