|
@@ -1,4 +1,4 @@
|
|
|
-import { lazy } from 'react';
|
|
|
+import { lazy, Suspense } from 'react';
|
|
|
import { BrowserRouter, Switch, Route } from 'react-router-dom';
|
|
|
import { connect } from 'react-redux';
|
|
|
import { ToastContainer } from 'react-toastify';
|
|
@@ -8,6 +8,7 @@ import { IAppProps, IAppState } from './typescript/app/interfaces';
|
|
|
|
|
|
import PrivateRoute from './components/Routes/PrivateRoute/PrivateRoute';
|
|
|
import PublicRoute from './components/Routes/PublicRoute/PublicRoute';
|
|
|
+import Loader from './components/Loader/Loader';
|
|
|
|
|
|
const Navigation = lazy(
|
|
|
() =>
|
|
@@ -66,56 +67,63 @@ const RegistrationForm = lazy(
|
|
|
),
|
|
|
);
|
|
|
|
|
|
-const Loader = lazy(
|
|
|
- () => import('./components/Loader/Loader' /* webpackChunkName: "Loader" */),
|
|
|
-);
|
|
|
-
|
|
|
function App({ isLoading }: IAppProps) {
|
|
|
return (
|
|
|
<div className={s.appWrapper}>
|
|
|
- <BrowserRouter>
|
|
|
- <Switch>
|
|
|
- <PrivateRoute path="/">
|
|
|
- <Navigation />
|
|
|
- </PrivateRoute>
|
|
|
- <PrivateRoute exact path="/categories">
|
|
|
- <Categories />
|
|
|
- </PrivateRoute>
|
|
|
- <PrivateRoute exact path="/categories/goods/:name">
|
|
|
- <Goods />
|
|
|
- </PrivateRoute>
|
|
|
- <PrivateRoute exact path="/categories/goods/:name/:id">
|
|
|
- <DetailGood />
|
|
|
- </PrivateRoute>
|
|
|
- <PrivateRoute exact path="/orders">
|
|
|
- <Orders />
|
|
|
- </PrivateRoute>
|
|
|
- <PrivateRoute path="/orders/:id">
|
|
|
- <DetailOrder />
|
|
|
- </PrivateRoute>
|
|
|
- <PublicRoute exact path={'/authorization'} restricted>
|
|
|
- <Goods />
|
|
|
- {/* <PublicRoute exact path={'/authorization/login'} restricted>
|
|
|
- <SignInForm />
|
|
|
- </PublicRoute>
|
|
|
- <PublicRoute exact path={'/authorization/registration'} restricted>
|
|
|
- <RegistrationForm />
|
|
|
- </PublicRoute> */}
|
|
|
- </PublicRoute>
|
|
|
- </Switch>
|
|
|
- {isLoading && <Loader />}
|
|
|
- <ToastContainer
|
|
|
- position="top-right"
|
|
|
- autoClose={3000}
|
|
|
- hideProgressBar={false}
|
|
|
- newestOnTop={false}
|
|
|
- closeOnClick
|
|
|
- rtl={false}
|
|
|
- pauseOnFocusLoss
|
|
|
- draggable
|
|
|
- pauseOnHover
|
|
|
- />
|
|
|
- </BrowserRouter>
|
|
|
+ <Suspense fallback={<Loader />}>
|
|
|
+ <BrowserRouter>
|
|
|
+ <Switch>
|
|
|
+ <Route path={'/authorization'}>
|
|
|
+ <Authorization />
|
|
|
+ <PublicRoute exact path={'/authorization/login'} restricted>
|
|
|
+ <SignInForm />
|
|
|
+ </PublicRoute>
|
|
|
+ <PublicRoute
|
|
|
+ exact
|
|
|
+ path={'/authorization/registration'}
|
|
|
+ restricted
|
|
|
+ >
|
|
|
+ <RegistrationForm />
|
|
|
+ </PublicRoute>
|
|
|
+ </Route>
|
|
|
+ <PrivateRoute path="/">
|
|
|
+ <Navigation />
|
|
|
+ </PrivateRoute>
|
|
|
+ <PrivateRoute exact path="/categories">
|
|
|
+ <Navigation />
|
|
|
+ <Categories />
|
|
|
+ </PrivateRoute>
|
|
|
+ <PrivateRoute exact path="/categories/goods/:name">
|
|
|
+ <Navigation />
|
|
|
+ <Goods />
|
|
|
+ </PrivateRoute>
|
|
|
+ <PrivateRoute exact path="/categories/goods/:name/:id">
|
|
|
+ <Navigation />
|
|
|
+ <DetailGood />
|
|
|
+ </PrivateRoute>
|
|
|
+ <PrivateRoute exact path="/orders">
|
|
|
+ <Navigation />
|
|
|
+ <Orders />
|
|
|
+ </PrivateRoute>
|
|
|
+ <PrivateRoute path="/orders/:id">
|
|
|
+ <Navigation />
|
|
|
+ <DetailOrder />
|
|
|
+ </PrivateRoute>
|
|
|
+ </Switch>
|
|
|
+ {isLoading && <Loader />}
|
|
|
+ <ToastContainer
|
|
|
+ position="top-right"
|
|
|
+ autoClose={3000}
|
|
|
+ hideProgressBar={false}
|
|
|
+ newestOnTop={false}
|
|
|
+ closeOnClick
|
|
|
+ rtl={false}
|
|
|
+ pauseOnFocusLoss
|
|
|
+ draggable
|
|
|
+ pauseOnHover
|
|
|
+ />
|
|
|
+ </BrowserRouter>
|
|
|
+ </Suspense>
|
|
|
</div>
|
|
|
);
|
|
|
}
|