import { combineReducers } from 'redux' import { ADD_BATCH_TO_STATES } from '../actions/states' export const states = combineReducers({ task: objectStates('task'), room: objectStates('room'), rack: objectStates('rack'), machine: objectStates('machine'), }) function objectStates(type) { return (state = {}, action) => { if (action.objectType !== type) { return state } if (action.type === ADD_BATCH_TO_STATES) { const batch = {} for (let i in action.objects) { batch[action.objects[i].tick] = Object.assign( {}, state[action.objects[i].tick], batch[action.objects[i].tick], { [action.objects[i][action.objectType + 'Id']]: action.objects[i] }, ) } return Object.assign({}, state, batch) } return state } }