@bigfishtv/cockpit
Version:
65 lines (55 loc) • 2.15 kB
JavaScript
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
/**
* @module Reducers/fileTypes
*/
import { FILE_EXTENSIONS_INITED, FILE_EXTENSION_ADDED, FILE_EXTENSIONS_ADDED, FILE_EXTENSION_REMOVED, FILE_EXTENSIONS_REMOVED, FILE_CATEGORY_EMPTIED } from '../constants/ActionTypes';
var initialState = {};
/**
* Reducer for managing file type extensions
* @param {Object} state
* @param {Object} action
* @param {String} action.type - const action type from constants/ActionTypes
* @return {Object} returns state
*/
export default function () {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
var action = arguments[1];
switch (action.type) {
case FILE_EXTENSIONS_INITED:
return _extends({}, action.state) || state;
case FILE_EXTENSION_ADDED:
if (!state[action.category]) {
state[action.category] = [action.extension];
} else if (state[action.category].indexOf(action.extension) < 0) {
state[action.category].push(action.extension);
}
return state;
case FILE_EXTENSIONS_ADDED:
if (!state[action.category]) {
state[action.category] = action.extensions;
} else {
action.extensions.map(function (extension) {
if (state[action.category].indexOf(extension) < 0) state[action.category].push(extension);
});
}
return state;
case FILE_EXTENSION_REMOVED:
if (state[action.category]) {
var index = state[action.category].indexOf(action.extension);
if (index >= 0) state[action.category].splice(index, 1);
}
return state;
case FILE_EXTENSIONS_REMOVED:
if (state[action.category]) {
action.extensions.map(function (extension) {
var index = state[action.category].indexOf(extension);
if (index >= 0) state[action.category].splice(index, 1);
});
}
return state;
case FILE_CATEGORY_EMPTIED:
if (state[action.category]) state[action.category] = [];
return state;
}
return state;
}