Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | import "@/i18n";
import i18n from "i18next";
import { useEffect, useCallback, Suspense } from "react";
import { BrowserRouter } from "react-router-dom";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { ToastContainer } from "react-toastify";
import "react-toastify/dist/ReactToastify.css";
import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider";
import { AdapterLuxon } from "@mui/x-date-pickers/AdapterLuxon";
import AppRoutes from "@/appRoutes";
import { Navbar } from "@/components/organisms";
import useUserStore from "@/store/useUserStore";
import ErrorBoundry from "./errorBoundry";
import UseScrollToTop from "./hooks/useScrollToTop";
function App() {
const queryClient = new QueryClient();
const { fontStyle } = useUserStore();
const updateBodyFontStyle = useCallback(() => {
if (fontStyle === "italic") {
document.body.style.fontStyle = "italic";
} else if (fontStyle === "normal") {
document.body.style.fontStyle = "normal";
}
}, [fontStyle]);
const handleDir = useCallback(() => {
const direction = i18n.dir(i18n.language);
document.documentElement.dir = direction;
}, []);
useEffect(() => {
updateBodyFontStyle();
handleDir();
i18n.on("languageChanged", handleDir);
return () => {
i18n.off("languageChanged", handleDir);
};
}, [updateBodyFontStyle, handleDir]);
return (
<Suspense fallback={<div>Loading page...</div>}>
<QueryClientProvider client={queryClient}>
<LocalizationProvider dateAdapter={AdapterLuxon} adapterLocale="de">
<BrowserRouter>
<UseScrollToTop />
<Navbar />
<ToastContainer hideProgressBar={false} theme="dark" />
<ErrorBoundry>
<AppRoutes />
</ErrorBoundry>
</BrowserRouter>
</LocalizationProvider>
</QueryClientProvider>
</Suspense>
);
}
export default App;
|