mirror of
https://github.com/ershisan99/it-incubator-todolist-ts-17-live-2024-08-17.git
synced 2025-12-16 12:33:29 +00:00
chore: refactor tasks reducer to use mutable operations
This commit is contained in:
@@ -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
|
||||
})
|
||||
},
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user