import { useMemo } from "react"; import { useDispatch, useSelector } from "react-redux"; import type { RootState } from "../store"; import { authActions } from "./auth.slice"; import type { IAuthStore, SetAuthActionPayload } from "./auth-store.types"; export const useAuthStore = () => { const authState = useSelector((state) => state.auth); const dispatch = useDispatch(); /** * @description set token info and user info to store and set status to done */ function setAuthData(payload: SetAuthActionPayload) { dispatch(authActions.setAuthData(payload)); } function clearAuthData() { dispatch(authActions.clear()); } function setAuthStatus(status: IAuthStore["status"]) { dispatch(authActions.setStatus(status)); } const isAuthenticated = useMemo(() => !!authState.tokenInfo, [authState]); return { ...authState, isAuthenticated, setAuthData, clearAuthData, setAuthStatus, }; };