chore: refactor auth reducer to export selectors

This commit is contained in:
2024-08-17 20:29:39 +02:00
parent fdd25b79d7
commit 09feecf53c
4 changed files with 10 additions and 14 deletions

View File

@@ -3,7 +3,6 @@ import './App.css'
import { TodolistsList } from 'features/TodolistsList/TodolistsList' import { TodolistsList } from 'features/TodolistsList/TodolistsList'
import { ErrorSnackbar } from 'components/ErrorSnackbar/ErrorSnackbar' import { ErrorSnackbar } from 'components/ErrorSnackbar/ErrorSnackbar'
import { useDispatch, useSelector } from 'react-redux' import { useDispatch, useSelector } from 'react-redux'
import { AppRootState } from './store'
import { import {
initializeAppTC, initializeAppTC,
selectAppInitialized, selectAppInitialized,
@@ -11,7 +10,7 @@ import {
} from './app-reducer' } from './app-reducer'
import { BrowserRouter, Route, Routes } from 'react-router-dom' import { BrowserRouter, Route, Routes } from 'react-router-dom'
import { Login } from 'features/Login/Login' import { Login } from 'features/Login/Login'
import { logoutTC } from 'features/Login/auth-reducer' import { logoutTC, selectIsLoggedIn } from 'features/Login/auth-reducer'
import { import {
AppBar, AppBar,
Button, Button,
@@ -31,9 +30,7 @@ type Props = {
function App({ demo = false }: Props) { function App({ demo = false }: Props) {
const status = useSelector(selectAppStatus) const status = useSelector(selectAppStatus)
const isInitialized = useSelector(selectAppInitialized) const isInitialized = useSelector(selectAppInitialized)
const isLoggedIn = useSelector<AppRootState, boolean>( const isLoggedIn = useSelector(selectIsLoggedIn)
(state) => state.auth.isLoggedIn
)
const dispatch = useDispatch<any>() const dispatch = useDispatch<any>()
useEffect(() => { useEffect(() => {

View File

@@ -1,8 +1,7 @@
import React from 'react' import React from 'react'
import { useFormik } from 'formik' import { useFormik } from 'formik'
import { useSelector } from 'react-redux' import { useSelector } from 'react-redux'
import { loginTC } from './auth-reducer' import { loginTC, selectIsLoggedIn } from './auth-reducer'
import { AppRootState } from 'app/store'
import { Navigate } from 'react-router-dom' import { Navigate } from 'react-router-dom'
import { useAppDispatch } from 'hooks/useAppDispatch' import { useAppDispatch } from 'hooks/useAppDispatch'
import { import {
@@ -19,9 +18,7 @@ import {
export const Login = () => { export const Login = () => {
const dispatch = useAppDispatch() const dispatch = useAppDispatch()
const isLoggedIn = useSelector<AppRootState, boolean>( const isLoggedIn = useSelector(selectIsLoggedIn)
(state) => state.auth.isLoggedIn
)
const formik = useFormik({ const formik = useFormik({
validate: (values) => { validate: (values) => {

View File

@@ -23,10 +23,13 @@ export const authSlice = createSlice({
state.isLoggedIn = action.payload state.isLoggedIn = action.payload
}, },
}, },
selectors: {
selectIsLoggedIn: (state) => state.isLoggedIn,
},
}) })
export const { setIsLoggedIn } = authSlice.actions export const { setIsLoggedIn } = authSlice.actions
export const { selectIsLoggedIn } = authSlice.selectors
// thunks // thunks
export const loginTC = export const loginTC =
(data: LoginParams): AppThunk => (data: LoginParams): AppThunk =>

View File

@@ -22,6 +22,7 @@ import { AddItemForm } from 'components/AddItemForm/AddItemForm'
import { Todolist } from './Todolist/Todolist' import { Todolist } from './Todolist/Todolist'
import { Navigate } from 'react-router-dom' import { Navigate } from 'react-router-dom'
import { useAppDispatch } from 'hooks/useAppDispatch' import { useAppDispatch } from 'hooks/useAppDispatch'
import { selectIsLoggedIn } from 'features/Login/auth-reducer'
type Props = { type Props = {
demo?: boolean demo?: boolean
@@ -32,9 +33,7 @@ export const TodolistsList: React.FC<Props> = ({ demo = false }) => {
(state) => state.todolists (state) => state.todolists
) )
const tasks = useSelector<AppRootState, TasksState>((state) => state.tasks) const tasks = useSelector<AppRootState, TasksState>((state) => state.tasks)
const isLoggedIn = useSelector<AppRootState, boolean>( const isLoggedIn = useSelector(selectIsLoggedIn)
(state) => state.auth.isLoggedIn
)
const dispatch = useAppDispatch() const dispatch = useAppDispatch()