mirror of
https://github.com/Unleash/unleash.git
synced 2024-10-23 20:07:40 +02:00
19443c651f
Create a new feature toggle by cloning the config of an existing feature toggle. This feature alos moves away from the input store for the "create feature toggle form".
62 lines
2.1 KiB
JavaScript
62 lines
2.1 KiB
JavaScript
import { List, Map as $Map } from 'immutable';
|
|
const debug = require('debug')('unleash:feature-store');
|
|
|
|
import {
|
|
ADD_FEATURE_TOGGLE,
|
|
RECEIVE_FEATURE_TOGGLES,
|
|
UPDATE_FEATURE_TOGGLE,
|
|
UPDATE_FEATURE_TOGGLE_STRATEGIES,
|
|
REMOVE_FEATURE_TOGGLE,
|
|
TOGGLE_FEATURE_TOGGLE,
|
|
} from './feature-actions';
|
|
|
|
import { USER_LOGOUT } from './user/actions';
|
|
|
|
const features = (state = new List([]), action) => {
|
|
switch (action.type) {
|
|
case ADD_FEATURE_TOGGLE:
|
|
debug(ADD_FEATURE_TOGGLE, action);
|
|
return state.push(new $Map(action.featureToggle));
|
|
case REMOVE_FEATURE_TOGGLE:
|
|
debug(REMOVE_FEATURE_TOGGLE, action);
|
|
return state.filter(toggle => toggle.get('name') !== action.featureToggleName);
|
|
case TOGGLE_FEATURE_TOGGLE:
|
|
debug(TOGGLE_FEATURE_TOGGLE, action);
|
|
return state.map(toggle => {
|
|
if (toggle.get('name') === action.name) {
|
|
return toggle.set('enabled', !toggle.get('enabled'));
|
|
} else {
|
|
return toggle;
|
|
}
|
|
});
|
|
case UPDATE_FEATURE_TOGGLE_STRATEGIES:
|
|
debug(UPDATE_FEATURE_TOGGLE_STRATEGIES, action);
|
|
return state.map(toggle => {
|
|
if (toggle.get('name') === action.featureToggle.name) {
|
|
return new $Map(action.featureToggle);
|
|
} else {
|
|
return toggle;
|
|
}
|
|
});
|
|
case UPDATE_FEATURE_TOGGLE:
|
|
debug(UPDATE_FEATURE_TOGGLE, action);
|
|
return state.map(toggle => {
|
|
if (toggle.get('name') === action.featureToggle.name) {
|
|
return new $Map(action.featureToggle);
|
|
} else {
|
|
return toggle;
|
|
}
|
|
});
|
|
case RECEIVE_FEATURE_TOGGLES:
|
|
debug(RECEIVE_FEATURE_TOGGLES, action);
|
|
return new List(action.featureToggles.map($Map));
|
|
case USER_LOGOUT:
|
|
debug(USER_LOGOUT, action);
|
|
return new List([]);
|
|
default:
|
|
return state;
|
|
}
|
|
};
|
|
|
|
export default features;
|