import React, { Suspense, lazy, useEffect } from "react"; import { Route, Routes, useNavigate } from "react-router-dom"; import Layout from "./Layout/Ui/Layout"; import { CrudRoute, menuItems } from "./Routes"; import { Spin } from "antd"; import { hasAbility } from "./utils/hasAbility"; import { useChangeLanguage } from "./Hooks/useChangeLanguage"; import useAuthState from "./zustand/AuthState"; import { TMenuItem } from "./types/App"; import { useTranslation } from "react-i18next"; import useSetPage_title from "./Hooks/useSetPageTitle"; import SpinContainer from "./Components/Layout/SpinContainer"; const Page404 = lazy(() => import("./Layout/Ui/NotFoundPage")); const Auth = lazy(() => import("./Pages/Auth/Page")); const App = () => { const { changeLanguage } = useChangeLanguage(); const navigate = useNavigate(); const { isAuthenticated } = useAuthState(); const [t] = useTranslation() useEffect(() => { if (!isAuthenticated) { navigate("/auth"); } }, [isAuthenticated, navigate]); const renderRouteElement = (route: any) => ( }> {route.header ? ( {route.element} ) : ( route.element ||

please Create the Page

)}
); const renderRoutesRecursively = (routes:TMenuItem[]) => routes.map((route: TMenuItem) => { const useAbility = hasAbility(route.abilities, route.abilities_value); const tableHeader = t(`${route?.header}`); useSetPage_title(tableHeader,route?.path); if (useAbility) { return ( {route.children && renderRoutesRecursively(route.children)} ); } return null; }); return ( }> {" "} {" "} } /> }> {" "} {" "} } /> {renderRoutesRecursively(menuItems)} {CrudRoute.map((route) => { const useAbility = hasAbility(route.abilities, route.abilities_value); const tableHeader = t(`${route?.header}`); useSetPage_title(tableHeader,route?.path); if (!useAbility) { return false; } return ( ); })} ); }; export default App;