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

28 lines 1.45 kB
"use strict"; 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