All files / src App.tsx

0% Statements 0/17
0% Branches 0/4
0% Functions 0/5
0% Lines 0/17

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;