Skip to content

Instantly share code, notes, and snippets.

@jonajgs
Created June 27, 2019 15:38
Show Gist options
  • Save jonajgs/ea5af01a03d8011219a3b4f8f4d473aa to your computer and use it in GitHub Desktop.
Save jonajgs/ea5af01a03d8011219a3b4f8f4d473aa to your computer and use it in GitHub Desktop.
export default function(state = initialState, action) {
const index = state.tasks.findIndex(task => task.id === action.taskId);
switch (action.type) {
case CREATE_TASK:
return {
...state,
lastCreated: state.lastCreated + 1,
tasks: [
...state.tasks,
...[{
...action.task,
id: state.lastCreated + 1,
}],
],
};
case EDIT_TASK:
return {
...state,
tasks: [
...state.tasks.map(task => {
if (task.id === action.taskId) {
return {
...task,
...action.newData,
};
}
return task;
}),
],
};
case DELETE_TASK:
return {
...state,
tasks: [
...state.tasks.slice(0, index),
...state.tasks.slice(index + 1),
],
};
case MARK_AS_COMPLETE_TASK:
return {
...state,
tasks: [
...state.tasks.map(task => {
if (task.id === action.taskId) {
return {
...task,
complete: true,
};
}
return task;
}),
],
};
case MARK_AS_UNCOMPLETE_TASK:
return {
...state,
tasks: [
...state.tasks.map(task => {
if (task.id === action.taskId) {
return {
...task,
complete: false,
};
}
return task;
}),
],
};
case SET_STATE:
return {
...state,
...action.state,
};
default:
return state;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment