import { ADD_TODO, DELETE_TODO, EDIT_TODO, MARK_TODO, MARK_ALL, CLEAR_MARKED, } from '../constants/ActionTypes'; 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; } }