const todoList = {
state: {...},
reducers: {
// update allIds and byId
remove(state, payload) {
const { idToRemove } = payload;
return {
byId: Object.entries(state.byId)
.filter(([id, todo]) => id !== idToRemove)
.reduce((acc, [id, todo]) => ({ ...acc, [id]: todo }), {}),
allIds: state.allIds.filter(id => id !== idToRemove)
};
},
// update byId only
toggle(state, payload) {
const { idToToggle } = payload;
return {
...state, // don't update allIds,
byId: {
...state.byId,
[idToToggle]: {
...state.byId[idToToggle],
isDone: !state.byId[idToToggle].isDone
}
}
};
}
}
};