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; }; }