import { createSlice } from '@reduxjs/toolkit'; const getInitalTodo = () => { const localtodolist = window.localStorage.getItem('todoList'); if (localtodolist) { return JSON.parse(localtodolist); } window.localStorage.setItem('todoList', JSON.stringify([])); return []; }; const initialValue = { filterStatus: 'all', filterTT: '', todoList: getInitalTodo(), }; export const todoSlice = createSlice({ name: 'todo', initialState: initialValue, reducers: { addTodo: (state, action) => { state.todoList.push(action.payload); const todoList = window.localStorage.getItem('todoList'); if (todoList) { const todoListArr = JSON.parse(todoList); todoListArr.push({ ...action.payload }); window.localStorage.setItem('todoList', JSON.stringify(todoListArr)); } else { window.localStorage.setItem( 'todoList', JSON.stringify([{ ...action.payload }]) ); } }, deleteTodo: (state, action) => { const todoList = window.localStorage.getItem('todoList'); if (todoList) { const todoListArr = JSON.parse(todoList); todoListArr.forEach((todo, index) => { if (todo.id === action.payload) { todoListArr.splice(index, 1); } }); window.localStorage.setItem('todoList', JSON.stringify(todoListArr)); state.todoList = todoListArr; } }, updateTodo: (state, action) => { const todoList = window.localStorage.getItem('todoList'); if (todoList) { const todoListArr = JSON.parse(todoList); todoListArr.forEach((todo, index) => { if (todo.id === action.payload.id) { todo.title = action.payload.title; todo.tasktype = action.payload.tasktype; todo.status = action.payload.status; } }); window.localStorage.setItem('todoList', JSON.stringify(todoListArr)); state.todoList = todoListArr; } }, updateStatusFilter: (state, action) => { state.filterStatus = action.payload; }, updateTTFilter: (state, action) => { state.filterTT = action.payload; }, }, }); export const { addTodo, deleteTodo, updateTodo, updateStatusFilter, updateTTFilter, } = todoSlice.actions; export default todoSlice.reducer;