react-cordova-boilerplate
Version:
TodoMVC example for react with development tools to build a cordova application
61 lines (52 loc) • 1.18 kB
JavaScript
import {
ADD_TODO,
DELETE_TODO,
EDIT_TODO,
MARK_TODO,
MARK_ALL,
CLEAR_MARKED
} from 'src/constants/todo-action-types.js';
const initialState = [{
text: 'Use Redux',
marked: false,
id: 0
}];
export default function todos(state = initialState, action) {
switch (action.type) {
case ADD_TODO:
return [{
id: (state.length === 0) ? 0 : state[0].id + 1,
marked: false,
text: action.text
}, ...state];
case DELETE_TODO:
return state.filter(todo =>
todo.id !== action.id
);
case EDIT_TODO:
return state.map(todo =>
(todo.id === action.id ? {
...todo, text: action.text
} :
todo)
);
case MARK_TODO:
return state.map(todo =>
(todo.id === action.id ? {
...todo, marked: !todo.marked
} :
todo)
);
case MARK_ALL: {
const areAllMarked = state.every(todo => todo.marked);
return state.map(todo => ({
...todo,
marked: !areAllMarked
}));
}
case CLEAR_MARKED:
return state.filter(todo => todo.marked === false);
default:
return state;
}
}