@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
28 lines • 1.45 kB
JavaScript
;
exports.__esModule = true;
var jsx_runtime_1 = require("react/jsx-runtime");
var react_router_dom_1 = require("react-router-dom");
var user_api_1 = require("../redux/api/user-api");
var full_screen_loader_1 = require("./full-screen-loader");
var store_1 = require("../redux/store");
var RequireUser = function (_a) {
var allowedRoles = _a.allowedRoles;
var loggedIn = (0, store_1.useAppSelector)(function (state) { return state.userState.loggedIn; });
var _b = user_api_1.userApi.endpoints.getMe.useQuery(null, {
skip: false,
refetchOnMountOrArgChange: true
}), isLoading = _b.isLoading, isFetching = _b.isFetching;
var loading = isLoading || isFetching;
var user = user_api_1.userApi.endpoints.getMe.useQueryState(null, {
selectFromResult: function (_a) {
var data = _a.data;
return data;
}
});
if (loading) {
return (0, jsx_runtime_1.jsx)(full_screen_loader_1.FullScreenLoader, {});
}
return (loggedIn || user) && allowedRoles.includes(user === null || user === void 0 ? void 0 : user.role) ? ((0, jsx_runtime_1.jsx)(react_router_dom_1.Outlet, {})) : loggedIn && user ? ((0, jsx_runtime_1.jsx)(react_router_dom_1.Navigate, { to: "/unauthorized", replace: true })) : ((0, jsx_runtime_1.jsx)(react_router_dom_1.Navigate, { to: "/login", replace: true }));
};
exports["default"] = RequireUser;
//# sourceMappingURL=require-user.js.map