@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
JavaScript
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