mirror of
https://github.com/Unleash/unleash.git
synced 2025-03-27 00:19:39 +01:00
90 lines
2.6 KiB
JavaScript
90 lines
2.6 KiB
JavaScript
import { List, Map as $Map } from 'immutable';
|
|
import { MUTE_ERROR } from './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-toggle/actions';
|
|
|
|
import {
|
|
ERROR_UPDATING_STRATEGY,
|
|
ERROR_CREATING_STRATEGY,
|
|
ERROR_RECEIVE_STRATEGIES,
|
|
UPDATE_STRATEGY_SUCCESS,
|
|
} from '../strategy/actions';
|
|
|
|
import {
|
|
ERROR_REMOVING_PROJECT,
|
|
ERROR_ADD_PROJECT,
|
|
ERROR_UPDATE_PROJECT,
|
|
} from '../project/actions';
|
|
|
|
import {
|
|
ERROR_ADD_ADDON_CONFIG,
|
|
ERROR_UPDATE_ADDON_CONFIG,
|
|
ERROR_REMOVING_ADDON_CONFIG,
|
|
} from '../addons/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_REMOVING_PROJECT:
|
|
case ERROR_UPDATE_PROJECT:
|
|
case ERROR_ADD_ADDON_CONFIG:
|
|
case ERROR_UPDATE_ADDON_CONFIG:
|
|
case ERROR_REMOVING_ADDON_CONFIG:
|
|
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))
|
|
);
|
|
// This reducer controls not only errors, but general information and success
|
|
// messages. This can be a little misleading, given it's naming. We should
|
|
// revise how this works in a future update.
|
|
case UPDATE_FEATURE_TOGGLE:
|
|
case UPDATE_FEATURE_TOGGLE_STRATEGIES:
|
|
case UPDATE_APPLICATION_FIELD:
|
|
case UPDATE_STRATEGY_SUCCESS:
|
|
return addErrorIfNotAlreadyInList(state, action.info);
|
|
default:
|
|
return state;
|
|
}
|
|
};
|
|
|
|
export default strategies;
|