2024-07-29 02:56:25 +00:00
|
|
|
import React, { useEffect } from "react";
|
2024-03-20 07:56:36 +00:00
|
|
|
import ReactDOM from "react-dom/client";
|
|
|
|
import {
|
|
|
|
BrowserRouter,
|
|
|
|
Navigate,
|
|
|
|
Route,
|
|
|
|
Routes,
|
|
|
|
useLocation,
|
|
|
|
useNavigate,
|
|
|
|
} from "react-router-dom";
|
|
|
|
import { CssBaseline, ThemeProvider } from "@mui/material";
|
2024-08-18 21:23:41 +00:00
|
|
|
import { AdapterMoment } from "@mui/x-date-pickers/AdapterMoment";
|
2024-03-20 07:56:36 +00:00
|
|
|
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,
|
2024-08-21 14:57:09 +00:00
|
|
|
OriginalUserSquizAccount,
|
|
|
|
setQuizUserAccount
|
2024-03-20 07:56:36 +00:00
|
|
|
} from "./stores/user";
|
|
|
|
import TariffConstructor from "./pages/TariffConstructor/TariffConstructor";
|
|
|
|
import {
|
|
|
|
clearAuthToken,
|
|
|
|
getMessageFromFetchError,
|
|
|
|
useUserAccountFetcher,
|
|
|
|
useUserFetcher,
|
|
|
|
} from "@frontend/kitui";
|
|
|
|
import { pdfjs } from "react-pdf";
|
2024-08-18 21:23:41 +00:00
|
|
|
import { ruRU } from "@mui/x-date-pickers/locales";
|
2024-03-20 07:56:36 +00:00
|
|
|
import { theme } from "./utils/theme";
|
|
|
|
import PPofData from "@root/docs/PPofData";
|
|
|
|
import Docs from "@root/docs/docs";
|
|
|
|
import Oferta from "@root/docs/content/oferta";
|
2024-03-29 06:39:25 +00:00
|
|
|
import OfertaQuizDevelop from "@root/docs/content/ofertaQuizDevelop";
|
2024-03-20 07:56:36 +00:00
|
|
|
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";
|
2024-08-21 14:57:09 +00:00
|
|
|
import { useNotEnoughMoneyAmount } from "@stores/notEnoughMoneyAmount"
|
2024-07-25 01:52:53 +00:00
|
|
|
import { usePipeSubscriber } from "./utils/hooks/usePipeSubscriber";
|
2024-07-29 02:56:25 +00:00
|
|
|
import { useAfterPay } from "./utils/hooks/useAutoPay";
|
2024-08-18 21:23:41 +00:00
|
|
|
import { LocalizationProvider } from "@mui/x-date-pickers";
|
2024-08-22 06:48:53 +00:00
|
|
|
import { ModalRequestCreate } from "./pages/Tariffs/ModalRequestCreate";
|
2024-08-24 19:19:22 +00:00
|
|
|
import * as crutch from "./useUserAccountFetcher";
|
2024-08-31 01:39:40 +00:00
|
|
|
import { useCart } from "./utils/hooks/useCart";
|
2023-03-27 12:45:44 +00:00
|
|
|
|
2024-07-10 15:51:18 +00:00
|
|
|
pdfjs.GlobalWorkerOptions.workerSrc = `//unpkg.com/pdfjs-dist@${pdfjs.version}/build/pdf.worker.min.js`;
|
2023-05-13 14:13:57 +00:00
|
|
|
|
2024-08-18 21:23:41 +00:00
|
|
|
const localeText =
|
|
|
|
ruRU.components.MuiLocalizationProvider.defaultProps.localeText;
|
2023-03-19 12:32:23 +00:00
|
|
|
const App = () => {
|
2024-03-20 07:56:36 +00:00
|
|
|
const location = useLocation();
|
2024-07-29 02:56:25 +00:00
|
|
|
const userId = useUserStore(state => state.userId);
|
2024-03-20 07:56:36 +00:00
|
|
|
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();
|
|
|
|
}
|
|
|
|
},
|
|
|
|
});
|
2023-07-11 01:33:36 +00:00
|
|
|
|
2024-03-20 07:56:36 +00:00
|
|
|
useUserAccountFetcher({
|
2024-07-22 18:32:41 +00:00
|
|
|
url: process.env.REACT_APP_DOMAIN + "/customer/v1.0.1/account",
|
2024-03-20 07:56:36 +00:00
|
|
|
userId,
|
|
|
|
onNewUserAccount: setUserAccount,
|
|
|
|
onError: (error) => {
|
|
|
|
const errorMessage = getMessageFromFetchError(error);
|
|
|
|
if (errorMessage) {
|
|
|
|
enqueueSnackbar(errorMessage);
|
|
|
|
clearUserData();
|
|
|
|
clearAuthToken();
|
|
|
|
navigate("/signin");
|
|
|
|
}
|
|
|
|
},
|
|
|
|
});
|
2023-05-17 11:20:11 +00:00
|
|
|
|
2024-08-24 19:19:22 +00:00
|
|
|
crutch.useUserAccountFetcher<OriginalUserSquizAccount>({
|
2024-08-21 14:57:09 +00:00
|
|
|
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");
|
|
|
|
}
|
|
|
|
},
|
|
|
|
});
|
|
|
|
|
2024-07-25 01:52:53 +00:00
|
|
|
usePipeSubscriber()
|
|
|
|
|
2024-03-20 07:56:36 +00:00
|
|
|
verify(userId);
|
2024-02-16 15:27:39 +00:00
|
|
|
|
2024-08-02 13:04:19 +00:00
|
|
|
useAfterPay()
|
2024-08-22 06:48:53 +00:00
|
|
|
|
2024-09-01 00:40:47 +00:00
|
|
|
console.log("location")
|
|
|
|
console.log(location)
|
|
|
|
console.log("window.location")
|
|
|
|
console.log(window.location)
|
2024-07-29 02:56:25 +00:00
|
|
|
|
2024-03-20 07:56:36 +00:00
|
|
|
if (location.state?.redirectTo)
|
|
|
|
return (
|
|
|
|
<Navigate
|
|
|
|
to={location.state.redirectTo}
|
|
|
|
replace
|
|
|
|
state={{ backgroundLocation: location }}
|
|
|
|
/>
|
|
|
|
);
|
2023-08-08 12:59:54 +00:00
|
|
|
|
2024-03-20 07:56:36 +00:00
|
|
|
return (
|
|
|
|
<>
|
|
|
|
{location.state?.backgroundLocation && (
|
|
|
|
<Routes>
|
|
|
|
<Route path="/signin" element={<SigninDialog />} />
|
|
|
|
<Route path="/signup" element={<SignupDialog />} />
|
|
|
|
<Route path="/recover" element={<RecoverDialog />} />
|
|
|
|
<Route path="/changepwd" element={<RecoverPassword />} />
|
|
|
|
<Route path="/changepwd/expired" element={<OutdatedLink />} />
|
|
|
|
</Routes>
|
|
|
|
)}
|
2024-08-22 06:48:53 +00:00
|
|
|
|
|
|
|
<ModalRequestCreate />
|
|
|
|
|
2024-03-20 07:56:36 +00:00
|
|
|
<Routes location={location.state?.backgroundLocation || location}>
|
|
|
|
<Route path="/" element={<Landing />} />
|
|
|
|
<Route
|
|
|
|
path="/signin"
|
|
|
|
element={
|
|
|
|
<Navigate to="/" replace state={{ redirectTo: "/signin" }} />
|
|
|
|
}
|
|
|
|
/>
|
|
|
|
<Route
|
|
|
|
path="/signup"
|
|
|
|
element={
|
|
|
|
<Navigate to="/" replace state={{ redirectTo: "/signup" }} />
|
|
|
|
}
|
|
|
|
/>
|
|
|
|
<Route
|
|
|
|
path="/recover"
|
|
|
|
element={
|
|
|
|
<Navigate to="/" replace state={{ redirectTo: "/recover" }} />
|
|
|
|
}
|
|
|
|
/>
|
|
|
|
<Route
|
|
|
|
path="/changepwd"
|
|
|
|
element={
|
|
|
|
<Navigate
|
|
|
|
to="/"
|
|
|
|
replace
|
|
|
|
state={{
|
2024-09-01 00:40:47 +00:00
|
|
|
redirectTo: `/changepwd${location.search}`,
|
2024-03-20 07:56:36 +00:00
|
|
|
}}
|
|
|
|
/>
|
|
|
|
}
|
|
|
|
/>
|
|
|
|
<Route
|
|
|
|
path="/changepwd/expired"
|
|
|
|
element={
|
|
|
|
<Navigate
|
|
|
|
to="/"
|
|
|
|
replace
|
|
|
|
state={{ redirectTo: "/changepwd/expired" }}
|
|
|
|
/>
|
|
|
|
}
|
|
|
|
/>
|
2024-03-20 02:04:27 +00:00
|
|
|
|
2024-03-20 07:56:36 +00:00
|
|
|
<Route path={"/image/:srcImage"} element={<ChatImageNewWindow />} />
|
|
|
|
<Route element={<PrivateRoute />}>
|
|
|
|
<Route element={<ProtectedLayout />}>
|
|
|
|
<Route path="/tariffs" element={<Tariffs />} />
|
|
|
|
<Route path="/tariffs/time" element={<TariffPage />} />
|
|
|
|
<Route path="/tariffs/volume" element={<TariffPage />} />
|
|
|
|
<Route path="/faq" element={<Faq />} />
|
|
|
|
<Route path="/support" element={<Support />} />
|
|
|
|
<Route path="/support/:ticketId" element={<Support />} />
|
|
|
|
<Route path="/tariffconstructor" element={<TariffConstructor />} />
|
|
|
|
<Route path="/cart" element={<Cart />} />
|
|
|
|
<Route path="/wallet" element={<Wallet />} />
|
|
|
|
<Route path="/payment" element={<Payment />} />
|
|
|
|
<Route path="/settings" element={<AccountSettings />} />
|
|
|
|
<Route path="/history" element={<History />} />
|
|
|
|
<Route
|
|
|
|
path="/tariffconstructor/savedtariffs"
|
|
|
|
element={<SavedTariffs />}
|
|
|
|
/>
|
|
|
|
</Route>
|
|
|
|
</Route>
|
|
|
|
<Route path="/ppdd" element={<PPofData />} />
|
|
|
|
<Route path="/quizpayment" element={<QuizPayment />} />
|
|
|
|
<Route element={<Docs />}>
|
|
|
|
<Route path={"/docs/oferta"} element={<Oferta />} />
|
2024-04-08 08:26:51 +00:00
|
|
|
<Route
|
|
|
|
path="/docs/ofertaQuizDevelop"
|
|
|
|
element={<OfertaQuizDevelop />}
|
|
|
|
/>
|
2024-03-20 07:56:36 +00:00
|
|
|
<Route path={"/docs/privacy"} element={<PrivacyPolicy />} />
|
|
|
|
</Route>
|
|
|
|
<Route path="/afterpay" element={<AfterPay />} />
|
|
|
|
<Route path="*" element={<PageNotFound />} />
|
|
|
|
</Routes>
|
|
|
|
</>
|
|
|
|
);
|
|
|
|
};
|
2023-03-19 12:30:40 +00:00
|
|
|
|
2024-03-20 07:56:36 +00:00
|
|
|
const root = ReactDOM.createRoot(
|
|
|
|
document.getElementById("root") as HTMLElement
|
|
|
|
);
|
2022-11-17 12:25:23 +00:00
|
|
|
root.render(
|
2024-03-20 07:56:36 +00:00
|
|
|
// <React.StrictMode>
|
|
|
|
<ThemeProvider theme={theme}>
|
2024-08-22 06:48:53 +00:00
|
|
|
<LocalizationProvider
|
|
|
|
dateAdapter={AdapterMoment}
|
|
|
|
adapterLocale="ru"
|
|
|
|
localeText={localeText}
|
|
|
|
>
|
|
|
|
<BrowserRouter>
|
|
|
|
<CssBaseline />
|
|
|
|
<SnackbarProvider />
|
|
|
|
<App />
|
|
|
|
</BrowserRouter>
|
2024-08-18 21:23:41 +00:00
|
|
|
</LocalizationProvider>
|
2024-03-20 07:56:36 +00:00
|
|
|
</ThemeProvider>
|
|
|
|
// </React.StrictMode>
|
|
|
|
);
|
2022-11-17 12:25:23 +00:00
|
|
|
|
|
|
|
// 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
|
2024-03-20 07:56:36 +00:00
|
|
|
reportWebVitals();
|