import React, { useEffect } from "react"; import ReactDOM from "react-dom/client"; import { BrowserRouter, Navigate, Route, Routes, useLocation, useNavigate, } from "react-router-dom"; import { CssBaseline, ThemeProvider } from "@mui/material"; import { AdapterMoment } from "@mui/x-date-pickers/AdapterMoment"; import Faq from "./pages/Faq/Faq"; import Wallet from "./pages/Wallet"; import Payment from "./pages/Payment/Payment"; import QuizPayment from "./pages/QuizPayment/QuizPayment"; import Support from "./pages/Support/Support"; import ChatImageNewWindow from "./pages/Support/ChatImageNewWindow"; import AccountSettings from "./pages/AccountSettings/AccountSettings"; import Landing from "./pages/Landing/Landing"; import Tariffs from "./pages/Tariffs/Tariffs"; import SigninDialog from "./pages/auth/Signin"; import SignupDialog from "./pages/auth/Signup"; import RecoverDialog from "./pages/auth/Recover"; import History from "./pages/History"; import Cart from "./pages/Cart/Cart"; import TariffPage from "./pages/Tariffs/TariffsPage"; import SavedTariffs from "./pages/SavedTariffs"; import PrivateRoute from "@root/utils/routes/ProtectedRoute"; import reportWebVitals from "./reportWebVitals"; import { SnackbarProvider, enqueueSnackbar } from "notistack"; import "./index.css"; import ProtectedLayout from "./components/ProtectedLayout"; import { clearUserData, setUser, setUserAccount, useUserStore, OriginalUserSquizAccount, setQuizUserAccount } from "./stores/user"; import TariffConstructor from "./pages/TariffConstructor/TariffConstructor"; import { clearAuthToken, getMessageFromFetchError, useUserAccountFetcher, useUserFetcher, } from "@frontend/kitui"; import { pdfjs } from "react-pdf"; import { ruRU } from "@mui/x-date-pickers/locales"; import { theme } from "./utils/theme"; import PPofData from "@root/docs/PPofData"; import Docs from "@root/docs/docs"; import Oferta from "@root/docs/content/oferta"; import OfertaQuizDevelop from "@root/docs/content/ofertaQuizDevelop"; import PrivacyPolicy from "@root/docs/content/PrivacyPolicy"; import RecoverPassword from "@root/pages/auth/RecoverPassword"; import OutdatedLink from "@root/pages/auth/OutdatedLink"; import { verify } from "./pages/AccountSettings/helper"; import AfterPay from "./pages/AfterPay"; import { PageNotFound } from "./pages/PageNotFound"; import { useNotEnoughMoneyAmount } from "@stores/notEnoughMoneyAmount" import { usePipeSubscriber } from "./utils/hooks/usePipeSubscriber"; import { useAfterPay } from "./utils/hooks/useAutoPay"; import { LocalizationProvider } from "@mui/x-date-pickers"; import { ModalRequestCreate } from "./pages/Tariffs/ModalRequestCreate"; import * as crutch from "./useUserAccountFetcher"; import { useCart } from "./utils/hooks/useCart"; pdfjs.GlobalWorkerOptions.workerSrc = `//unpkg.com/pdfjs-dist@${pdfjs.version}/build/pdf.worker.min.js`; const localeText = ruRU.components.MuiLocalizationProvider.defaultProps.localeText; const App = () => { const location = useLocation(); const userId = useUserStore(state => state.userId); const navigate = useNavigate(); useUserFetcher({ url: process.env.REACT_APP_DOMAIN + `/user/${userId}`, userId, onNewUser: setUser, onError: (error) => { const errorMessage = getMessageFromFetchError(error); if (errorMessage) { enqueueSnackbar(errorMessage); clearUserData(); clearAuthToken(); } }, }); useUserAccountFetcher({ url: process.env.REACT_APP_DOMAIN + "/customer/v1.0.1/account", userId, onNewUserAccount: setUserAccount, onError: (error) => { const errorMessage = getMessageFromFetchError(error); if (errorMessage) { enqueueSnackbar(errorMessage); clearUserData(); clearAuthToken(); navigate("/signin"); } }, }); crutch.useUserAccountFetcher({ url: `${process.env.REACT_APP_DOMAIN}/squiz/account/get`, userId, onNewUserAccount: setQuizUserAccount, onError: (error) => { const errorMessage = getMessageFromFetchError(error); if (errorMessage) { enqueueSnackbar(errorMessage); clearUserData(); clearAuthToken(); navigate("/signin"); } }, }); usePipeSubscriber() verify(userId); useAfterPay() if (location.state?.redirectTo) return ( ); return ( <> {location.state?.backgroundLocation && ( } /> } /> } /> } /> } /> )} } /> } /> } /> } /> } /> } /> } /> }> }> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> }> } /> } /> } /> } /> } /> ); }; const root = ReactDOM.createRoot( document.getElementById("root") as HTMLElement ); root.render( // // ); // If you want to start measuring performance in your app, pass a function // to log results (for example: reportWebVitals(console.log)) // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals reportWebVitals();