import { useSelector, useDispatch } from 'react-redux'; import { useNavigate } from 'react-router-dom'; import { selectUser, selectIsAuthenticated, selectAuthLoading, selectAuthError, logout as logoutAction, } from '../app/slices/authSlice'; import { toast } from 'react-toastify'; import type { RootState } from '../app/store'; export function useAuth() { const dispatch = useDispatch(); const navigate = useNavigate(); const user = useSelector((state: RootState) => selectUser(state)); const isAuthenticated = useSelector((state: RootState) => selectIsAuthenticated(state)); const loading = useSelector((state: RootState) => selectAuthLoading(state)); const error = useSelector((state: RootState) => selectAuthError(state)); const logout = () => { dispatch(logoutAction()); toast.info('You have been logged out'); navigate('/login'); }; return { user, isAuthenticated, loading, error, logout, }; }