chore: rename action creators to remove "AC"

This commit is contained in:
2024-08-17 19:24:45 +02:00
parent 0fab9d4e0a
commit 7b88633fba
11 changed files with 102 additions and 110 deletions

View File

@@ -1,8 +1,8 @@
import { import {
appReducer, appReducer,
InitialStateType, InitialStateType,
setAppErrorAC, setAppError,
setAppStatusAC, setAppStatus,
} from './app-reducer' } from './app-reducer'
let startState: InitialStateType let startState: InitialStateType
@@ -16,11 +16,11 @@ beforeEach(() => {
}) })
test('correct error message should be set', () => { test('correct error message should be set', () => {
const endState = appReducer(startState, setAppErrorAC('some error')) const endState = appReducer(startState, setAppError('some error'))
expect(endState.error).toBe('some error') expect(endState.error).toBe('some error')
}) })
test('correct status should be set', () => { test('correct status should be set', () => {
const endState = appReducer(startState, setAppStatusAC('loading')) const endState = appReducer(startState, setAppStatus('loading'))
expect(endState.status).toBe('loading') expect(endState.status).toBe('loading')
}) })

View File

@@ -1,6 +1,6 @@
import { createSlice, PayloadAction } from '@reduxjs/toolkit' import { createSlice, PayloadAction } from '@reduxjs/toolkit'
import { authAPI } from 'api/todolists-api' import { authAPI } from 'api/todolists-api'
import { setIsLoggedInAC } from 'features/Login/auth-reducer' import { setIsLoggedIn } from 'features/Login/auth-reducer'
import { AppThunk } from 'app/store' import { AppThunk } from 'app/store'
export type RequestStatusType = 'idle' | 'loading' | 'succeeded' | 'failed' export type RequestStatusType = 'idle' | 'loading' | 'succeeded' | 'failed'
@@ -24,13 +24,13 @@ const appSlice = createSlice({
name: 'app', name: 'app',
initialState, initialState,
reducers: { reducers: {
setAppErrorAC(state, action: PayloadAction<string | null>) { setAppError(state, action: PayloadAction<string | null>) {
return { ...state, error: action.payload } return { ...state, error: action.payload }
}, },
setAppStatusAC(state, action: PayloadAction<RequestStatusType>) { setAppStatus(state, action: PayloadAction<RequestStatusType>) {
return { ...state, status: action.payload } return { ...state, status: action.payload }
}, },
setAppInitializedAC(state, action: PayloadAction<boolean>) { setAppInitialized(state, action: PayloadAction<boolean>) {
return { ...state, isInitialized: action.payload } return { ...state, isInitialized: action.payload }
}, },
}, },
@@ -38,16 +38,15 @@ const appSlice = createSlice({
export const appReducer = appSlice.reducer export const appReducer = appSlice.reducer
export const { setAppInitializedAC, setAppStatusAC, setAppErrorAC } = export const { setAppInitialized, setAppStatus, setAppError } = appSlice.actions
appSlice.actions
export const initializeAppTC = (): AppThunk => (dispatch) => { export const initializeAppTC = (): AppThunk => (dispatch) => {
authAPI.me().then((res) => { authAPI.me().then((res) => {
if (res.data.resultCode === 0) { if (res.data.resultCode === 0) {
dispatch(setIsLoggedInAC(true)) dispatch(setIsLoggedIn(true))
} else { } else {
} }
dispatch(setAppInitializedAC(true)) dispatch(setAppInitialized(true))
}) })
} }

View File

@@ -1,7 +1,7 @@
import React from 'react' import React from 'react'
import { useDispatch, useSelector } from 'react-redux' import { useDispatch, useSelector } from 'react-redux'
import { AppRootStateType } from 'app/store' import { AppRootStateType } from 'app/store'
import { setAppErrorAC } from 'app/app-reducer' import { setAppError } from 'app/app-reducer'
import { AlertProps, Snackbar } from '@mui/material' import { AlertProps, Snackbar } from '@mui/material'
import MuiAlert from '@mui/material/Alert' import MuiAlert from '@mui/material/Alert'
@@ -31,7 +31,7 @@ export function ErrorSnackbar() {
if (reason === 'clickaway') { if (reason === 'clickaway') {
return return
} }
dispatch(setAppErrorAC(null)) dispatch(setAppError(null))
} }
const isOpen = error !== null const isOpen = error !== null

View File

@@ -1,6 +1,6 @@
import { createSlice, PayloadAction } from '@reduxjs/toolkit' import { createSlice, PayloadAction } from '@reduxjs/toolkit'
import { authAPI, LoginParamsType } from 'api/todolists-api' import { authAPI, LoginParamsType } from 'api/todolists-api'
import { setAppStatusAC } from 'app/app-reducer' import { setAppStatus } from 'app/app-reducer'
import { import {
handleServerAppError, handleServerAppError,
handleServerNetworkError, handleServerNetworkError,
@@ -19,7 +19,7 @@ const authSlice = createSlice({
name: 'auth', name: 'auth',
initialState, initialState,
reducers: { reducers: {
setIsLoggedInAC(state, action: PayloadAction<boolean>) { setIsLoggedIn(state, action: PayloadAction<boolean>) {
return { ...state, isLoggedIn: action.payload } return { ...state, isLoggedIn: action.payload }
}, },
}, },
@@ -27,19 +27,19 @@ const authSlice = createSlice({
export const authReducer = authSlice.reducer export const authReducer = authSlice.reducer
export const { setIsLoggedInAC } = authSlice.actions export const { setIsLoggedIn } = authSlice.actions
// thunks // thunks
export const loginTC = export const loginTC =
(data: LoginParamsType): AppThunk => (data: LoginParamsType): AppThunk =>
(dispatch) => { (dispatch) => {
dispatch(setAppStatusAC('loading')) dispatch(setAppStatus('loading'))
authAPI authAPI
.login(data) .login(data)
.then((res) => { .then((res) => {
if (res.data.resultCode === 0) { if (res.data.resultCode === 0) {
dispatch(setIsLoggedInAC(true)) dispatch(setIsLoggedIn(true))
dispatch(setAppStatusAC('succeeded')) dispatch(setAppStatus('succeeded'))
} else { } else {
handleServerAppError(res.data, dispatch) handleServerAppError(res.data, dispatch)
} }
@@ -50,13 +50,13 @@ export const loginTC =
} }
export const logoutTC = (): AppThunk => (dispatch) => { export const logoutTC = (): AppThunk => (dispatch) => {
dispatch(setAppStatusAC('loading')) dispatch(setAppStatus('loading'))
authAPI authAPI
.logout() .logout()
.then((res) => { .then((res) => {
if (res.data.resultCode === 0) { if (res.data.resultCode === 0) {
dispatch(setIsLoggedInAC(false)) dispatch(setIsLoggedIn(false))
dispatch(setAppStatusAC('succeeded')) dispatch(setAppStatus('succeeded'))
} else { } else {
handleServerAppError(res.data, dispatch) handleServerAppError(res.data, dispatch)
} }

View File

@@ -3,7 +3,7 @@ import { useSelector } from 'react-redux'
import { AppRootStateType } from 'app/store' import { AppRootStateType } from 'app/store'
import { import {
addTodolistTC, addTodolistTC,
changeTodolistFilterAC, changeTodolistFilter,
changeTodolistTitleTC, changeTodolistTitleTC,
fetchTodolistsTC, fetchTodolistsTC,
FilterValuesType, FilterValuesType,
@@ -80,7 +80,7 @@ export const TodolistsList: React.FC<PropsType> = ({ demo = false }) => {
value: FilterValuesType, value: FilterValuesType,
todolistId: string todolistId: string
) { ) {
const action = changeTodolistFilterAC({ id: todolistId, filter: value }) const action = changeTodolistFilter({ id: todolistId, filter: value })
dispatch(action) dispatch(action)
}, []) }, [])

View File

@@ -1,17 +1,13 @@
import { import {
addTaskAC, addTask,
removeTaskAC, removeTask,
setTasksAC, setTasks,
tasksReducer, tasksReducer,
TasksStateType, TasksStateType,
updateTaskAC, updateTask,
} from './tasks-reducer' } from './tasks-reducer'
import { import { addTodolist, removeTodolist, setTodolists } from './todolists-reducer'
addTodolistAC,
removeTodolistAC,
setTodolistsAC,
} from './todolists-reducer'
import { TaskPriorities, TaskStatuses } from 'api/todolists-api' import { TaskPriorities, TaskStatuses } from 'api/todolists-api'
let startState: TasksStateType = {} let startState: TasksStateType = {}
@@ -97,7 +93,7 @@ beforeEach(() => {
}) })
test('correct task should be deleted from correct array', () => { test('correct task should be deleted from correct array', () => {
const action = removeTaskAC({ taskId: '2', todolistId: 'todolistId2' }) const action = removeTask({ taskId: '2', todolistId: 'todolistId2' })
const endState = tasksReducer(startState, action) const endState = tasksReducer(startState, action)
@@ -106,8 +102,8 @@ test('correct task should be deleted from correct array', () => {
expect(endState['todolistId2'].every((t) => t.id != '2')).toBeTruthy() expect(endState['todolistId2'].every((t) => t.id != '2')).toBeTruthy()
}) })
test('correct task should be added to correct array', () => { test('correct task should be added to correct array', () => {
//const action = addTaskAC("juce", "todolistId2"); //const action = addTask("juce", "todolistId2");
const action = addTaskAC({ const action = addTask({
todoListId: 'todolistId2', todoListId: 'todolistId2',
title: 'juce', title: 'juce',
status: TaskStatuses.New, status: TaskStatuses.New,
@@ -129,7 +125,7 @@ test('correct task should be added to correct array', () => {
expect(endState['todolistId2'][0].status).toBe(TaskStatuses.New) expect(endState['todolistId2'][0].status).toBe(TaskStatuses.New)
}) })
test('status of specified task should be changed', () => { test('status of specified task should be changed', () => {
const action = updateTaskAC({ const action = updateTask({
taskId: '2', taskId: '2',
model: { status: TaskStatuses.New }, model: { status: TaskStatuses.New },
todolistId: 'todolistId2', todolistId: 'todolistId2',
@@ -141,7 +137,7 @@ test('status of specified task should be changed', () => {
expect(endState['todolistId2'][1].status).toBe(TaskStatuses.New) expect(endState['todolistId2'][1].status).toBe(TaskStatuses.New)
}) })
test('title of specified task should be changed', () => { test('title of specified task should be changed', () => {
const action = updateTaskAC({ const action = updateTask({
taskId: '2', taskId: '2',
model: { title: 'yogurt' }, model: { title: 'yogurt' },
todolistId: 'todolistId2', todolistId: 'todolistId2',
@@ -154,7 +150,7 @@ test('title of specified task should be changed', () => {
expect(endState['todolistId2'][0].title).toBe('bread') expect(endState['todolistId2'][0].title).toBe('bread')
}) })
test('new array should be added when new todolist is added', () => { test('new array should be added when new todolist is added', () => {
const action = addTodolistAC({ const action = addTodolist({
id: 'blabla', id: 'blabla',
title: 'new todolist', title: 'new todolist',
order: 0, order: 0,
@@ -173,7 +169,7 @@ test('new array should be added when new todolist is added', () => {
expect(endState[newKey]).toEqual([]) expect(endState[newKey]).toEqual([])
}) })
test('propertry with todolistId should be deleted', () => { test('propertry with todolistId should be deleted', () => {
const action = removeTodolistAC('todolistId2') const action = removeTodolist('todolistId2')
const endState = tasksReducer(startState, action) const endState = tasksReducer(startState, action)
@@ -184,7 +180,7 @@ test('propertry with todolistId should be deleted', () => {
}) })
test('empty arrays should be added when we set todolists', () => { test('empty arrays should be added when we set todolists', () => {
const action = setTodolistsAC([ const action = setTodolists([
{ id: '1', title: 'title 1', order: 0, addedDate: '' }, { id: '1', title: 'title 1', order: 0, addedDate: '' },
{ id: '2', title: 'title 2', order: 0, addedDate: '' }, { id: '2', title: 'title 2', order: 0, addedDate: '' },
]) ])
@@ -198,7 +194,7 @@ test('empty arrays should be added when we set todolists', () => {
expect(endState['2']).toBeDefined() expect(endState['2']).toBeDefined()
}) })
test('tasks should be added for todolist', () => { test('tasks should be added for todolist', () => {
const action = setTasksAC({ const action = setTasks({
tasks: startState['todolistId1'], tasks: startState['todolistId1'],
todolistId: 'todolistId1', todolistId: 'todolistId1',
}) })

View File

@@ -7,12 +7,12 @@ import {
} from 'api/todolists-api' } from 'api/todolists-api'
import { createSlice, PayloadAction } from '@reduxjs/toolkit' import { createSlice, PayloadAction } from '@reduxjs/toolkit'
import { import {
addTodolistAC, addTodolist,
removeTodolistAC, removeTodolist,
setTodolistsAC, setTodolists,
} from 'features/TodolistsList/todolists-reducer' } from 'features/TodolistsList/todolists-reducer'
import { AppRootStateType, AppThunk } from 'app/store' import { AppRootStateType, AppThunk } from 'app/store'
import { setAppStatusAC } from 'app/app-reducer' import { setAppStatus } from 'app/app-reducer'
import { import {
handleServerAppError, handleServerAppError,
handleServerNetworkError, handleServerNetworkError,
@@ -37,7 +37,7 @@ const tasksSlice = createSlice({
name: 'tasks', name: 'tasks',
initialState, initialState,
reducers: { reducers: {
removeTaskAC( removeTask(
state, state,
action: PayloadAction<{ action: PayloadAction<{
taskId: string taskId: string
@@ -51,7 +51,7 @@ const tasksSlice = createSlice({
), ),
} }
}, },
addTaskAC(state, action: PayloadAction<TaskType>) { addTask(state, action: PayloadAction<TaskType>) {
return { return {
...state, ...state,
[action.payload.todoListId]: [ [action.payload.todoListId]: [
@@ -60,7 +60,7 @@ const tasksSlice = createSlice({
], ],
} }
}, },
updateTaskAC( updateTask(
state, state,
action: PayloadAction<{ action: PayloadAction<{
taskId: string taskId: string
@@ -78,7 +78,7 @@ const tasksSlice = createSlice({
), ),
} }
}, },
setTasksAC( setTasks(
state, state,
action: PayloadAction<{ action: PayloadAction<{
tasks: Array<TaskType> tasks: Array<TaskType>
@@ -90,15 +90,15 @@ const tasksSlice = createSlice({
}, },
extraReducers(builder) { extraReducers(builder) {
builder builder
.addCase(addTodolistAC, (state, action) => { .addCase(addTodolist, (state, action) => {
return { ...state, [action.payload.id]: [] } return { ...state, [action.payload.id]: [] }
}) })
.addCase(removeTodolistAC, (state, action) => { .addCase(removeTodolist, (state, action) => {
const copyState = { ...state } const copyState = { ...state }
delete copyState[action.payload] delete copyState[action.payload]
return copyState return copyState
}) })
.addCase(setTodolistsAC, (state, action) => { .addCase(setTodolists, (state, action) => {
const copyState = { ...state } const copyState = { ...state }
action.payload.forEach((tl) => { action.payload.forEach((tl) => {
copyState[tl.id] = [] copyState[tl.id] = []
@@ -110,17 +110,16 @@ const tasksSlice = createSlice({
export const tasksReducer = tasksSlice.reducer export const tasksReducer = tasksSlice.reducer
export const { removeTaskAC, setTasksAC, updateTaskAC, addTaskAC } = export const { removeTask, setTasks, updateTask, addTask } = tasksSlice.actions
tasksSlice.actions
export const fetchTasksTC = export const fetchTasksTC =
(todolistId: string): AppThunk => (todolistId: string): AppThunk =>
(dispatch) => { (dispatch) => {
dispatch(setAppStatusAC('loading')) dispatch(setAppStatus('loading'))
todolistsAPI.getTasks(todolistId).then((res) => { todolistsAPI.getTasks(todolistId).then((res) => {
const tasks = res.data.items const tasks = res.data.items
dispatch(setTasksAC({ tasks: tasks, todolistId: todolistId })) dispatch(setTasks({ tasks: tasks, todolistId: todolistId }))
dispatch(setAppStatusAC('succeeded')) dispatch(setAppStatus('succeeded'))
}) })
} }
@@ -128,7 +127,7 @@ export const removeTaskTC =
(taskId: string, todolistId: string): AppThunk => (taskId: string, todolistId: string): AppThunk =>
(dispatch) => { (dispatch) => {
todolistsAPI.deleteTask(todolistId, taskId).then((res) => { todolistsAPI.deleteTask(todolistId, taskId).then((res) => {
const action = removeTaskAC({ taskId: taskId, todolistId: todolistId }) const action = removeTask({ taskId: taskId, todolistId: todolistId })
dispatch(action) dispatch(action)
}) })
} }
@@ -136,15 +135,15 @@ export const removeTaskTC =
export const addTaskTC = export const addTaskTC =
(title: string, todolistId: string): AppThunk => (title: string, todolistId: string): AppThunk =>
(dispatch) => { (dispatch) => {
dispatch(setAppStatusAC('loading')) dispatch(setAppStatus('loading'))
todolistsAPI todolistsAPI
.createTask(todolistId, title) .createTask(todolistId, title)
.then((res) => { .then((res) => {
if (res.data.resultCode === 0) { if (res.data.resultCode === 0) {
const task = res.data.data.item const task = res.data.data.item
const action = addTaskAC(task) const action = addTask(task)
dispatch(action) dispatch(action)
dispatch(setAppStatusAC('succeeded')) dispatch(setAppStatus('succeeded'))
} else { } else {
handleServerAppError(res.data, dispatch) handleServerAppError(res.data, dispatch)
} }
@@ -183,7 +182,7 @@ export const updateTaskTC =
.updateTask(todolistId, taskId, apiModel) .updateTask(todolistId, taskId, apiModel)
.then((res) => { .then((res) => {
if (res.data.resultCode === 0) { if (res.data.resultCode === 0) {
const action = updateTaskAC({ const action = updateTask({
taskId: taskId, taskId: taskId,
model: domainModel, model: domainModel,
todolistId: todolistId, todolistId: todolistId,

View File

@@ -1,11 +1,11 @@
import { import {
addTodolistAC, addTodolist,
changeTodolistEntityStatusAC, changeTodolistEntityStatus,
changeTodolistFilterAC, changeTodolistFilter,
changeTodolistTitleAC, changeTodolistTitle,
FilterValuesType, FilterValuesType,
removeTodolistAC, removeTodolist,
setTodolistsAC, setTodolists,
TodolistDomainType, TodolistDomainType,
todolistsReducer, todolistsReducer,
} from './todolists-reducer' } from './todolists-reducer'
@@ -41,7 +41,7 @@ beforeEach(() => {
}) })
test('correct todolist should be removed', () => { test('correct todolist should be removed', () => {
const endState = todolistsReducer(startState, removeTodolistAC(todolistId1)) const endState = todolistsReducer(startState, removeTodolist(todolistId1))
expect(endState.length).toBe(1) expect(endState.length).toBe(1)
expect(endState[0].id).toBe(todolistId2) expect(endState[0].id).toBe(todolistId2)
@@ -55,7 +55,7 @@ test('correct todolist should be added', () => {
order: 0, order: 0,
} }
const endState = todolistsReducer(startState, addTodolistAC(todolist)) const endState = todolistsReducer(startState, addTodolist(todolist))
expect(endState.length).toBe(3) expect(endState.length).toBe(3)
expect(endState[0].title).toBe(todolist.title) expect(endState[0].title).toBe(todolist.title)
@@ -65,7 +65,7 @@ test('correct todolist should be added', () => {
test('correct todolist should change its name', () => { test('correct todolist should change its name', () => {
let newTodolistTitle = 'New Todolist' let newTodolistTitle = 'New Todolist'
const action = changeTodolistTitleAC({ const action = changeTodolistTitle({
id: todolistId2, id: todolistId2,
title: newTodolistTitle, title: newTodolistTitle,
}) })
@@ -79,7 +79,7 @@ test('correct todolist should change its name', () => {
test('correct filter of todolist should be changed', () => { test('correct filter of todolist should be changed', () => {
let newFilter: FilterValuesType = 'completed' let newFilter: FilterValuesType = 'completed'
const action = changeTodolistFilterAC({ id: todolistId2, filter: newFilter }) const action = changeTodolistFilter({ id: todolistId2, filter: newFilter })
const endState = todolistsReducer(startState, action) const endState = todolistsReducer(startState, action)
@@ -87,7 +87,7 @@ test('correct filter of todolist should be changed', () => {
expect(endState[1].filter).toBe(newFilter) expect(endState[1].filter).toBe(newFilter)
}) })
test('todolists should be added', () => { test('todolists should be added', () => {
const action = setTodolistsAC(startState) const action = setTodolists(startState)
const endState = todolistsReducer([], action) const endState = todolistsReducer([], action)
@@ -96,7 +96,7 @@ test('todolists should be added', () => {
test('correct entity status of todolist should be changed', () => { test('correct entity status of todolist should be changed', () => {
let newStatus: RequestStatusType = 'loading' let newStatus: RequestStatusType = 'loading'
const action = changeTodolistEntityStatusAC({ const action = changeTodolistEntityStatus({
id: todolistId2, id: todolistId2,
status: newStatus, status: newStatus,
}) })

View File

@@ -1,6 +1,6 @@
import { createSlice, PayloadAction } from '@reduxjs/toolkit' import { createSlice, PayloadAction } from '@reduxjs/toolkit'
import { todolistsAPI, TodolistType } from 'api/todolists-api' import { todolistsAPI, TodolistType } from 'api/todolists-api'
import { RequestStatusType, setAppStatusAC } from 'app/app-reducer' import { RequestStatusType, setAppStatus } from 'app/app-reducer'
import { AppThunk } from 'app/store' import { AppThunk } from 'app/store'
import { handleServerNetworkError } from 'utils/error-utils' import { handleServerNetworkError } from 'utils/error-utils'
@@ -16,16 +16,16 @@ const todolistsSlice = createSlice({
name: 'todolists', name: 'todolists',
initialState, initialState,
reducers: { reducers: {
removeTodolistAC(state, action: PayloadAction<string>) { removeTodolist(state, action: PayloadAction<string>) {
return state.filter((tl) => tl.id != action.payload) return state.filter((tl) => tl.id != action.payload)
}, },
addTodolistAC(state, action: PayloadAction<TodolistType>) { addTodolist(state, action: PayloadAction<TodolistType>) {
return [ return [
{ ...action.payload, filter: 'all', entityStatus: 'idle' }, { ...action.payload, filter: 'all', entityStatus: 'idle' },
...state, ...state,
] ]
}, },
changeTodolistTitleAC( changeTodolistTitle(
state, state,
action: PayloadAction<{ action: PayloadAction<{
id: string id: string
@@ -38,7 +38,7 @@ const todolistsSlice = createSlice({
: tl : tl
) )
}, },
changeTodolistFilterAC( changeTodolistFilter(
state, state,
action: PayloadAction<{ action: PayloadAction<{
id: string id: string
@@ -51,7 +51,7 @@ const todolistsSlice = createSlice({
: tl : tl
) )
}, },
changeTodolistEntityStatusAC( changeTodolistEntityStatus(
state, state,
action: PayloadAction<{ action: PayloadAction<{
id: string id: string
@@ -64,7 +64,7 @@ const todolistsSlice = createSlice({
: tl : tl
) )
}, },
setTodolistsAC(state, action: PayloadAction<Array<TodolistType>>) { setTodolists(state, action: PayloadAction<Array<TodolistType>>) {
return action.payload.map((tl) => ({ return action.payload.map((tl) => ({
...tl, ...tl,
filter: 'all', filter: 'all',
@@ -75,24 +75,24 @@ const todolistsSlice = createSlice({
}) })
export const { export const {
changeTodolistEntityStatusAC, changeTodolistEntityStatus,
changeTodolistFilterAC, changeTodolistFilter,
changeTodolistTitleAC, changeTodolistTitle,
addTodolistAC, addTodolist,
removeTodolistAC, removeTodolist,
setTodolistsAC, setTodolists,
} = todolistsSlice.actions } = todolistsSlice.actions
export const todolistsReducer = todolistsSlice.reducer export const todolistsReducer = todolistsSlice.reducer
export const fetchTodolistsTC = (): AppThunk => { export const fetchTodolistsTC = (): AppThunk => {
return (dispatch) => { return (dispatch) => {
dispatch(setAppStatusAC('loading')) dispatch(setAppStatus('loading'))
todolistsAPI todolistsAPI
.getTodolists() .getTodolists()
.then((res) => { .then((res) => {
dispatch(setTodolistsAC(res.data)) dispatch(setTodolists(res.data))
dispatch(setAppStatusAC('succeeded')) dispatch(setAppStatus('succeeded'))
}) })
.catch((error) => { .catch((error) => {
handleServerNetworkError(error, dispatch) handleServerNetworkError(error, dispatch)
@@ -102,31 +102,29 @@ export const fetchTodolistsTC = (): AppThunk => {
export const removeTodolistTC = (todolistId: string): AppThunk => { export const removeTodolistTC = (todolistId: string): AppThunk => {
return (dispatch) => { return (dispatch) => {
//изменим глобальный статус приложения, чтобы вверху полоса побежала //изменим глобальный статус приложения, чтобы вверху полоса побежала
dispatch(setAppStatusAC('loading')) dispatch(setAppStatus('loading'))
//изменим статус конкретного тудулиста, чтобы он мог задизеблить что надо //изменим статус конкретного тудулиста, чтобы он мог задизеблить что надо
dispatch( dispatch(changeTodolistEntityStatus({ id: todolistId, status: 'loading' }))
changeTodolistEntityStatusAC({ id: todolistId, status: 'loading' })
)
todolistsAPI.deleteTodolist(todolistId).then((res) => { todolistsAPI.deleteTodolist(todolistId).then((res) => {
dispatch(removeTodolistAC(todolistId)) dispatch(removeTodolist(todolistId))
//скажем глобально приложению, что асинхронная операция завершена //скажем глобально приложению, что асинхронная операция завершена
dispatch(setAppStatusAC('succeeded')) dispatch(setAppStatus('succeeded'))
}) })
} }
} }
export const addTodolistTC = (title: string): AppThunk => { export const addTodolistTC = (title: string): AppThunk => {
return (dispatch) => { return (dispatch) => {
dispatch(setAppStatusAC('loading')) dispatch(setAppStatus('loading'))
todolistsAPI.createTodolist(title).then((res) => { todolistsAPI.createTodolist(title).then((res) => {
dispatch(addTodolistAC(res.data.data.item)) dispatch(addTodolist(res.data.data.item))
dispatch(setAppStatusAC('succeeded')) dispatch(setAppStatus('succeeded'))
}) })
} }
} }
export const changeTodolistTitleTC = (id: string, title: string): AppThunk => { export const changeTodolistTitleTC = (id: string, title: string): AppThunk => {
return (dispatch) => { return (dispatch) => {
todolistsAPI.updateTodolist(id, title).then((res) => { todolistsAPI.updateTodolist(id, title).then((res) => {
dispatch(changeTodolistTitleAC({ id: id, title: title })) dispatch(changeTodolistTitle({ id: id, title: title }))
}) })
} }
} }

View File

@@ -1,5 +1,5 @@
import { import {
addTodolistAC, addTodolist,
TodolistDomainType, TodolistDomainType,
todolistsReducer, todolistsReducer,
} from './todolists-reducer' } from './todolists-reducer'
@@ -17,7 +17,7 @@ test('ids should be equals', () => {
order: 0, order: 0,
} }
const action = addTodolistAC(todolist) const action = addTodolist(todolist)
const endTasksState = tasksReducer(startTasksState, action) const endTasksState = tasksReducer(startTasksState, action)
const endTodolistsState = todolistsReducer(startTodolistsState, action) const endTodolistsState = todolistsReducer(startTodolistsState, action)

View File

@@ -1,4 +1,4 @@
import { setAppErrorAC, setAppStatusAC } from 'app/app-reducer' import { setAppError, setAppStatus } from 'app/app-reducer'
import { ResponseType } from 'api/todolists-api' import { ResponseType } from 'api/todolists-api'
import { Dispatch } from 'redux' import { Dispatch } from 'redux'
@@ -7,17 +7,17 @@ export const handleServerAppError = <D>(
dispatch: Dispatch dispatch: Dispatch
) => { ) => {
if (data.messages.length) { if (data.messages.length) {
dispatch(setAppErrorAC(data.messages[0])) dispatch(setAppError(data.messages[0]))
} else { } else {
dispatch(setAppErrorAC('Some error occurred')) dispatch(setAppError('Some error occurred'))
} }
dispatch(setAppStatusAC('failed')) dispatch(setAppStatus('failed'))
} }
export const handleServerNetworkError = ( export const handleServerNetworkError = (
error: { message: string }, error: { message: string },
dispatch: Dispatch dispatch: Dispatch
) => { ) => {
dispatch(setAppErrorAC(error.message ? error.message : 'Some error occurred')) dispatch(setAppError(error.message ? error.message : 'Some error occurred'))
dispatch(setAppStatusAC('failed')) dispatch(setAppStatus('failed'))
} }