chore: prepare todolists reducer for rtk (use single argument in action creators)

This commit is contained in:
2024-08-17 17:51:19 +02:00
parent 73fbe68b9f
commit f154e0385a
3 changed files with 38 additions and 11 deletions

View File

@@ -80,7 +80,7 @@ export const TodolistsList: React.FC<PropsType> = ({ demo = false }) => {
value: FilterValuesType,
todolistId: string
) {
const action = changeTodolistFilterAC(todolistId, value)
const action = changeTodolistFilterAC({ id: todolistId, filter: value })
dispatch(action)
}, [])

View File

@@ -65,7 +65,10 @@ test('correct todolist should be added', () => {
test('correct todolist should change its name', () => {
let newTodolistTitle = 'New Todolist'
const action = changeTodolistTitleAC(todolistId2, newTodolistTitle)
const action = changeTodolistTitleAC({
id: todolistId2,
title: newTodolistTitle,
})
const endState = todolistsReducer(startState, action)
@@ -76,7 +79,7 @@ test('correct todolist should change its name', () => {
test('correct filter of todolist should be changed', () => {
let newFilter: FilterValuesType = 'completed'
const action = changeTodolistFilterAC(todolistId2, newFilter)
const action = changeTodolistFilterAC({ id: todolistId2, filter: newFilter })
const endState = todolistsReducer(startState, action)
@@ -93,7 +96,10 @@ test('todolists should be added', () => {
test('correct entity status of todolist should be changed', () => {
let newStatus: RequestStatusType = 'loading'
const action = changeTodolistEntityStatusAC(todolistId2, newStatus)
const action = changeTodolistEntityStatusAC({
id: todolistId2,
status: newStatus,
})
const endState = todolistsReducer(startState, action)

View File

@@ -50,24 +50,43 @@ export const todolistsReducer = (
// actions
export const removeTodolistAC = (id: string) =>
({ type: 'REMOVE-TODOLIST', id }) as const
export const addTodolistAC = (todolist: TodolistType) =>
({ type: 'ADD-TODOLIST', todolist }) as const
export const changeTodolistTitleAC = (id: string, title: string) =>
export const changeTodolistTitleAC = ({
id,
title,
}: {
id: string
title: string
}) =>
({
type: 'CHANGE-TODOLIST-TITLE',
id,
title,
}) as const
export const changeTodolistFilterAC = (id: string, filter: FilterValuesType) =>
export const changeTodolistFilterAC = ({
id,
filter,
}: {
id: string
filter: FilterValuesType
}) =>
({
type: 'CHANGE-TODOLIST-FILTER',
id,
filter,
}) as const
export const changeTodolistEntityStatusAC = (
id: string,
export const changeTodolistEntityStatusAC = ({
id,
status,
}: {
id: string
status: RequestStatusType
) =>
}) =>
({
type: 'CHANGE-TODOLIST-ENTITY-STATUS',
id,
@@ -96,7 +115,9 @@ export const removeTodolistTC = (todolistId: string) => {
//изменим глобальный статус приложения, чтобы вверху полоса побежала
dispatch(setAppStatusAC('loading'))
//изменим статус конкретного тудулиста, чтобы он мог задизеблить что надо
dispatch(changeTodolistEntityStatusAC(todolistId, 'loading'))
dispatch(
changeTodolistEntityStatusAC({ id: todolistId, status: 'loading' })
)
todolistsAPI.deleteTodolist(todolistId).then((res) => {
dispatch(removeTodolistAC(todolistId))
//скажем глобально приложению, что асинхронная операция завершена
@@ -116,7 +137,7 @@ export const addTodolistTC = (title: string) => {
export const changeTodolistTitleTC = (id: string, title: string) => {
return (dispatch: Dispatch<ActionsType>) => {
todolistsAPI.updateTodolist(id, title).then((res) => {
dispatch(changeTodolistTitleAC(id, title))
dispatch(changeTodolistTitleAC({ id: id, title: title }))
})
}
}