diff --git a/src/app/app-reducer.test.ts b/src/app/app-reducer.test.ts index 046cb75..5fe4169 100644 --- a/src/app/app-reducer.test.ts +++ b/src/app/app-reducer.test.ts @@ -1,11 +1,11 @@ import { appSlice, - InitialState, + AppInitialState, setAppError, setAppStatus, } from './app-reducer' -let startState: InitialState +let startState: AppInitialState const appReducer = appSlice.reducer diff --git a/src/app/app-reducer.ts b/src/app/app-reducer.ts index 1aefe7f..9b98488 100644 --- a/src/app/app-reducer.ts +++ b/src/app/app-reducer.ts @@ -5,16 +5,22 @@ import { AppThunk } from 'app/store' export type RequestStatus = 'idle' | 'loading' | 'succeeded' | 'failed' -export type InitialState = { - // происходит ли сейчас взаимодействие с сервером +export type AppInitialState = { + /** + * происходит ли сейчас взаимодействие с сервером + */ status: RequestStatus - // если ошибка какая-то глобальная произойдёт - мы запишем текст ошибки сюда + /** + * если ошибка какая-то глобальная произойдёт - мы запишем текст ошибки сюда + */ error: string | null - // true когда приложение проинициализировалось (проверили юзера, настройки получили и т.д.) + /** + * true когда приложение проинициализировалось (проверили юзера, настройки получили и т.д.) + */ isInitialized: boolean } -const initialState: InitialState = { +const initialState: AppInitialState = { status: 'idle', error: null, isInitialized: false, @@ -23,17 +29,23 @@ const initialState: InitialState = { export const appSlice = createSlice({ name: 'app', initialState, - reducers: { - setAppError(state, action: PayloadAction) { + reducers: (builder) => ({ + // setAppError(state, action: PayloadAction) { + // state.error = action.payload + // }, + setAppError: builder.reducer((state, action) => { state.error = action.payload - }, + }), setAppStatus(state, action: PayloadAction) { state.status = action.payload }, - setAppInitialized(state, action: PayloadAction) { + setAppInitialized( + state, + action: PayloadAction + ) { state.isInitialized = action.payload }, - }, + }), selectors: { selectAppError: (state) => state.error, selectAppStatus: (state) => state.status, diff --git a/src/app/store.ts b/src/app/store.ts index 4efa8a6..37fdb02 100644 --- a/src/app/store.ts +++ b/src/app/store.ts @@ -1,21 +1,22 @@ import { tasksSlice } from 'features/TodolistsList/tasks-reducer' import { todolistsSlice } from 'features/TodolistsList/todolists-reducer' -import { combineReducers } from 'redux' import { ThunkAction, ThunkDispatch } from 'redux-thunk' import { appSlice } from './app-reducer' import { authSlice } from 'features/Login/auth-reducer' -import { configureStore, UnknownAction } from '@reduxjs/toolkit' +import { combineSlices, configureStore, UnknownAction } from '@reduxjs/toolkit' -const rootReducer = combineReducers({ - [appSlice.reducerPath]: appSlice.reducer, - [tasksSlice.reducerPath]: tasksSlice.reducer, - [todolistsSlice.reducerPath]: todolistsSlice.reducer, - [authSlice.reducerPath]: authSlice.reducer, -}) +const rootReducer = combineSlices( + appSlice, + authSlice, + todolistsSlice, + tasksSlice +) // ❗старая запись, с новыми версиями не работает // const store = createStore(rootReducer, applyMiddleware(thunkMiddleware)); -export const store = configureStore({ reducer: rootReducer }) +export const store = configureStore({ + reducer: rootReducer, +}) export type AppRootState = ReturnType diff --git a/src/components/AddItemForm/AddItemForm.tsx b/src/components/AddItemForm/AddItemForm.tsx index 695b822..f44caec 100644 --- a/src/components/AddItemForm/AddItemForm.tsx +++ b/src/components/AddItemForm/AddItemForm.tsx @@ -31,7 +31,7 @@ export const AddItemForm = React.memo(function ({ if (error !== null) { setError(null) } - if (e.charCode === 13) { + if (e.key === 'Enter') { addItemHandler() } } @@ -44,7 +44,7 @@ export const AddItemForm = React.memo(function ({ error={!!error} value={title} onChange={onChangeHandler} - onKeyPress={onKeyPressHandler} + onKeyDown={onKeyPressHandler} label='Title' helperText={error} /> diff --git a/src/features/TodolistsList/tasks-reducer.ts b/src/features/TodolistsList/tasks-reducer.ts index 6777cf3..5348c75 100644 --- a/src/features/TodolistsList/tasks-reducer.ts +++ b/src/features/TodolistsList/tasks-reducer.ts @@ -27,9 +27,7 @@ export type UpdateDomainTaskModel = { deadline?: string } -export type TasksState = { - [key: string]: Array -} +export type TasksState = Record> const initialState: TasksState = {}