From 3f736cd3db63f106eac02f220477b4a0f3b0eceb Mon Sep 17 00:00:00 2001 From: Georgios Andreadis Date: Thu, 31 Aug 2017 17:59:51 +0200 Subject: Implement room creation --- src/reducers/objects.js | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) (limited to 'src/reducers/objects.js') diff --git a/src/reducers/objects.js b/src/reducers/objects.js index 4fbffea6..801a5456 100644 --- a/src/reducers/objects.js +++ b/src/reducers/objects.js @@ -1,5 +1,10 @@ import {combineReducers} from "redux"; -import {ADD_PROP_TO_STORE_OBJECT, ADD_TO_STORE} from "../actions/objects"; +import { + ADD_ID_TO_STORE_OBJECT_LIST_PROP, + ADD_PROP_TO_STORE_OBJECT, + ADD_TO_STORE, + REMOVE_ID_FROM_STORE_OBJECT_LIST_PROP +} from "../actions/objects"; export const objects = combineReducers({ simulation: object("simulation"), @@ -33,14 +38,40 @@ function objectWithId(type, getId) { if (action.type === ADD_TO_STORE) { return Object.assign( + {}, state, {[getId(action.object)]: action.object} ); } else if (action.type === ADD_PROP_TO_STORE_OBJECT) { return Object.assign( + {}, state, {[action.objectId]: Object.assign(state[action.objectId], action.propObject)} ); + } else if (action.type === ADD_ID_TO_STORE_OBJECT_LIST_PROP) { + return Object.assign( + {}, + state, + { + [action.objectId]: Object.assign( + {}, + state[action.objectId], + {[action.propName]: [...state[action.objectId][action.propName], action.id]} + ) + } + ); + } else if (action.type === REMOVE_ID_FROM_STORE_OBJECT_LIST_PROP) { + return Object.assign( + {}, + state, + { + [action.objectId]: Object.assign( + {}, + state[action.objectId], + {[action.propName]: state[action.objectId][action.propName].filter(id => id !== action.id)} + ) + } + ); } return state; -- cgit v1.2.3