import "antd/dist/reset.css"; import "./App.css"; import { Layout, Spin, Typography } from "antd"; import { Constants, UseUserSession, handleLogout, isDevelopmentEnv, myFetch, } from "./utils"; import DashboardLayout from "./Components/DashboardLayout"; import SideBarProvider from "./Contexts/SideBarContext"; import { AppProvider } from "./Contexts/AppContext"; import { UserProfileProvider } from "./Contexts/UserProfileContext"; import { UsersProvider } from "./Contexts/UsersContext"; import HeaderProvider from "./Contexts/HeaderContext"; import { useEffect, useState } from "react"; import StoresProvider from "./Contexts/StoresContext"; import { clarity } from "react-microsoft-clarity"; import { useTranslation } from "react-i18next"; import MyAppLogo from "./Components/MyAppLogo"; import { AuthenticationRoutes } from "./Components/AppRoutes"; export function Loading() { const { t } = useTranslation(); return (
{t("app.loading")}
); } export default function App() { const { _, i18n } = useTranslation(); const { userSession, setUserSession } = UseUserSession(); const [appUserData, setAppUserData] = useState(null); useEffect(() => { if (!userSession) return; myFetch({ url: "/user", method: "GET", }) .then((data) => { setAppUserData(data); if (data.user.analytics_enabled) { clarity.init(Constants.CLARITY_PROJECT_ID); } if (data.user.language !== i18n.language) { i18n.changeLanguage(data.user.language); } }) .catch(() => handleLogout({ setUserSession: setUserSession, }) ); }, []); if (!userSession) { return ; } if (appUserData === null) { return ; } console.info( `\n %c ZeitAdler Dashboard %c ${ isDevelopmentEnv() ? "Dev" : "Stable" } %c \n`, "background-color: #555;color: #fff;padding: 3px 2px 3px 3px;border-radius: 3px 0 0 3px;font-family: DejaVu Sans,Verdana,Geneva,sans-serif;text-shadow: 0 1px 0 rgba(1, 1, 1, 0.3)", "background-color: #bc81e0;background-image: linear-gradient(90deg, #6878d6, #4d61d6);color: #fff;padding: 3px 3px 3px 2px;border-radius: 0 3px 3px 0;font-family: DejaVu Sans,Verdana,Geneva,sans-serif;text-shadow: 0 1px 0 rgba(1, 1, 1, 0.3)", "background-color: transparent" ); return ( ); }