chore: refactor tasks reducer to use mutable operations

This commit is contained in:
2024-08-17 20:11:26 +02:00
parent edbb247555
commit 08365ee037

View File

@@ -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<TaskEntity>) {
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
})
},
})