UNPKG

@rtbjs/use-state

Version:

`@rtbjs/use-state` is a state management tool that can act as a local state and be easily turned into a global redux state. It is an innovative approach to state management that combines the advantages of both React's useState and Redux's state management

26 lines 1.22 kB
import { jsx as _jsx } from "react/jsx-runtime"; import { Navigate, Outlet } from 'react-router-dom'; import { userApi } from '../redux/api/user-api'; import { FullScreenLoader } from './full-screen-loader'; import { useAppSelector } from '../redux/store'; var RequireUser = function (_a) { var allowedRoles = _a.allowedRoles; var loggedIn = useAppSelector(function (state) { return state.userState.loggedIn; }); var _b = userApi.endpoints.getMe.useQuery(null, { skip: false, refetchOnMountOrArgChange: true }), isLoading = _b.isLoading, isFetching = _b.isFetching; var loading = isLoading || isFetching; var user = userApi.endpoints.getMe.useQueryState(null, { selectFromResult: function (_a) { var data = _a.data; return data; } }); if (loading) { return _jsx(FullScreenLoader, {}); } return (loggedIn || user) && allowedRoles.includes(user === null || user === void 0 ? void 0 : user.role) ? (_jsx(Outlet, {})) : loggedIn && user ? (_jsx(Navigate, { to: "/unauthorized", replace: true })) : (_jsx(Navigate, { to: "/login", replace: true })); }; export default RequireUser; //# sourceMappingURL=require-user.js.map