UNPKG

react-cordova-boilerplate

Version:

TodoMVC example for react with development tools to build a cordova application

61 lines (52 loc) 1.18 kB
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; } }