diff --git a/src/features/TodolistsList/tasks-reducer.ts b/src/features/TodolistsList/tasks-reducer.ts index 6a376f9..a7e1faf 100644 --- a/src/features/TodolistsList/tasks-reducer.ts +++ b/src/features/TodolistsList/tasks-reducer.ts @@ -44,21 +44,13 @@ const tasksSlice = createSlice({ todolistId: string }> ) { - return { - ...state, - [action.payload.todolistId]: state[action.payload.todolistId].filter( - (t) => t.id != action.payload.taskId - ), - } + const tasks = state[action.payload.todolistId] + const index = tasks.findIndex((task) => task.id === action.payload.taskId) + if (index !== -1) tasks.splice(index, 1) }, addTask(state, action: PayloadAction) { - return { - ...state, - [action.payload.todoListId]: [ - action.payload, - ...state[action.payload.todoListId], - ], - } + const tasks = state[action.payload.todoListId] + tasks.unshift(action.payload) }, updateTask( state, @@ -68,14 +60,10 @@ const tasksSlice = createSlice({ todolistId: string }> ) { - return { - ...state, - [action.payload.todolistId]: state[action.payload.todolistId].map( - (t) => - t.id === action.payload.taskId - ? { ...t, ...action.payload.model } - : t - ), + const tasks = state[action.payload.todolistId] + const task = tasks.find((task) => task.id === action.payload.taskId) + if (task) { + Object.assign(task, action.payload.model) } }, setTasks( @@ -85,25 +73,21 @@ const tasksSlice = createSlice({ todolistId: string }> ) { - return { ...state, [action.payload.todolistId]: action.payload.tasks } + state[action.payload.todolistId] = action.payload.tasks }, }, extraReducers(builder) { builder .addCase(addTodolist, (state, action) => { - return { ...state, [action.payload.id]: [] } + state[action.payload.id] = [] }) .addCase(removeTodolist, (state, action) => { - const copyState = { ...state } - delete copyState[action.payload] - return copyState + delete state[action.payload] }) .addCase(setTodolists, (state, action) => { - const copyState = { ...state } action.payload.forEach((tl) => { - copyState[tl.id] = [] + state[tl.id] = [] }) - return copyState }) }, })