aboutsummaryrefslogtreecommitdiff
path: root/src/containers/Page/Page.tsx
diff options
context:
space:
mode:
authoreug-vs <eug-vs@keemail.me>2020-08-10 00:28:39 +0300
committereug-vs <eug-vs@keemail.me>2020-08-10 00:28:39 +0300
commit7ba15a22d1bd57e7c26ff2d5fccf5505aaf8619e (patch)
tree8a71d8dd4bf89f09f14aee2636f519572e95f891 /src/containers/Page/Page.tsx
parentdfa6f0a8d1415539e1ff6a3ca848627bbe87b470 (diff)
downloadwhich-ui-7ba15a22d1bd57e7c26ff2d5fccf5505aaf8619e.tar.gz
refactor: move pages -> containers
Diffstat (limited to 'src/containers/Page/Page.tsx')
-rw-r--r--src/containers/Page/Page.tsx59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/containers/Page/Page.tsx b/src/containers/Page/Page.tsx
new file mode 100644
index 0000000..8a39636
--- /dev/null
+++ b/src/containers/Page/Page.tsx
@@ -0,0 +1,59 @@
+import React, { Suspense } from 'react';
+import { makeStyles, useTheme } from '@material-ui/core/styles';
+import { useMediaQuery } from '@material-ui/core';
+import { SnackbarProvider } from 'notistack';
+import { Switch, Route } from 'react-router-dom';
+import Loading from '../../components/Loading/Loading';
+
+const ProfilePage = React.lazy(() => import('../ProfilePage/ProfilePage'));
+const FeedPage = React.lazy(() => import('../FeedPage/FeedPage'));
+const LoginPage = React.lazy(() => import('../LoginPage/LoginPage'));
+const RegistrationPage = React.lazy(() => import('../RegistrationPage/RegistrationPage'));
+const HomePage = React.lazy(() => import('../HomePage/HomePage'));
+const NotificationsPage = React.lazy(() => import('../NotificationsPage/NotificationsPage'));
+
+
+const useStyles = makeStyles(theme => ({
+ root: {
+ [theme.breakpoints.down('sm')]: {
+ margin: theme.spacing(2, 0, 12, 0)
+ },
+ [theme.breakpoints.up('md')]: {
+ margin: theme.spacing(15, 5, 8, 5)
+ }
+ }
+}));
+
+
+const Page: React.FC = () => {
+ const classes = useStyles();
+ const theme = useTheme();
+ const isMobile = useMediaQuery(theme.breakpoints.down('sm'));
+
+ return (
+ <SnackbarProvider
+ maxSnack={3}
+ anchorOrigin={{
+ vertical: isMobile ? 'top' : 'bottom',
+ horizontal: 'right'
+ }}
+ >
+ <div className={classes.root}>
+ <Suspense fallback={<Loading />}>
+ <Switch>
+ <Route exact path="/" component={HomePage} />
+ <Route exact path="/login" component={LoginPage} />
+ <Route exact path="/registration" component={RegistrationPage} />
+ <Route exact path="/feed" component={FeedPage} />
+ <Route exact path="/notifications" component={NotificationsPage} />
+ <Route path="/profile/:username" component={ProfilePage} />
+ </Switch>
+ </Suspense>
+ </div>
+ </SnackbarProvider>
+ );
+};
+
+
+export default Page;
+