UNPKG

@bigfishtv/cockpit

Version:

68 lines (59 loc) 1.76 kB
/** * @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' const 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(state = initialState, action) { switch (action.type) { case FILE_EXTENSIONS_INITED: return { ...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(extension => { if (state[action.category].indexOf(extension) < 0) state[action.category].push(extension) }) } return state case FILE_EXTENSION_REMOVED: if (state[action.category]) { const 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(extension => { const 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 }