import React from "react";
import { Navigate, useLocation } from "react-router-dom";
import { useAppStore, useCodeStore, useUserStore } from "stores";
import { getFlattedMenus } from "@core/utils/store";
import { ROUTES } from "./Routes";
import { useAppMenu } from "./useAppMenu";
interface Props {
children: JSX.Element;
}
function RequireAuth({ children }: Props) {
const loaded = useUserStore((s) => s.loaded);
const me = useUserStore((s) => s.me);
const accessibleMenus = useUserStore((s) => s.authorityList);
const callAppMenu = useAppStore((s) => s.callAppMenu);
const appMenuGroupLoaded = useAppStore((s) => s.appMenuGroupLoaded);
const callAllCode = useCodeStore((s) => s.callAllCode);
const { APP_MENUS } = useAppMenu();
const location = useLocation();
const currentMenu = getFlattedMenus(APP_MENUS as any).find((fMenu) => fMenu.key === location.pathname);
// use codeStore
// React.useEffect(() => {
// if (!codeStoreLoaded && loaded && me) {
// callAllCode().then();
// callAppMenu().then();
// }
// }, [callAllCode, callAppMenu, codeStoreLoaded, loaded, me]);
React.useEffect(() => {
if (loaded && me && !appMenuGroupLoaded) {
callAllCode().then();
callAppMenu().then();
}
}, [callAppMenu, loaded, me, appMenuGroupLoaded, callAllCode]);
if (!loaded) {
return null;
}
if (currentMenu && currentMenu.program_type && !accessibleMenus.includes(currentMenu.program_type)) {
return ;
}
if (loaded && !me) {
return ;
}
return children;
}
export default RequireAuth;