diff -r 6542f93cdc0d -r c77570164050 client/src/reducers/notesReducer.js --- a/client/src/reducers/notesReducer.js Wed Jul 19 17:03:40 2017 +0200 +++ b/client/src/reducers/notesReducer.js Thu Jul 20 11:23:08 2017 +0200 @@ -12,21 +12,34 @@ export default (state = Immutable.List([]), action) => { switch (action.type) { - case types.ADD_NOTE: + case types.ADD_NOTE: { return state.push(new NoteRecord(action.note)); - case types.DELETE_NOTE: + } + case types.DELETE_NOTE: { + const noteIndex = findNoteIndex(state, action.note.get('_id')); + const note = findNote(state, action.note.get('_id')); + return state.set(noteIndex, note.merge({deleted:true, modified:true})); + } + case types.DO_DELETE_NOTE: { const noteIndex = state.findIndex((note) => note.get('_id') === action.note.get('_id')); return state.delete(noteIndex); - case types.UPDATE_NOTE: + } + case types.UPDATE_NOTE: { const index = findNoteIndex(state, action.note.get('_id')); const note = findNote(state, action.note.get('_id')); - let newNote = note; - Object.entries(action.data).forEach(([key, value]) => { - newNote = note.set(key, value) - }); + let newNote = note.merge(action.data, {modified:true}); return state.set(index, newNote); - case types.DELETE_SESSION: - return state.filter((note) => action.session.get('_id') !== note.session) + } + case types.DELETE_SESSION: { + const sessionId = action.session.get('_id'); + return state.map((note) => { + if(sessionId === note.session) { + return note.merge({deleted:true, modified:true}); + } else { + return note; + } + }) + } default: return state; }