diff options
author | Eugene Sokolov <eug-vs@keemail.me> | 2020-08-10 13:51:11 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-10 13:51:11 +0300 |
commit | 823c82383424616bc7c2562e2a763321edb6050c (patch) | |
tree | 1d5220d68ab8ebb392c87038f2fc24cc72b28775 /src/containers/Page | |
parent | 70d20b76f042a519e8e164279dfa31b5ce027d44 (diff) | |
parent | 78218c0f3427ad79de003ac59cffb99b08f0ae7d (diff) | |
download | which-ui-823c82383424616bc7c2562e2a763321edb6050c.tar.gz |
Merge pull request #74 from which-ecosystem/fetching
SWR feat. crazy refactor
Diffstat (limited to 'src/containers/Page')
-rw-r--r-- | src/containers/Page/Page.tsx | 59 |
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..643e6de --- /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 Profile = React.lazy(() => import('../Profile/Profile')); +const Feed = React.lazy(() => import('../Feed/Feed')); +const Login = React.lazy(() => import('../Login/Login')); +const Registration = React.lazy(() => import('../Registration/Registration')); +const Home = React.lazy(() => import('../Home/Home')); +const Notifications = React.lazy(() => import('../Notifications/Notifications')); + + +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={isMobile ? 1 : 3} + anchorOrigin={{ + vertical: isMobile ? 'top' : 'bottom', + horizontal: 'right' + }} + > + <div className={classes.root}> + <Suspense fallback={<Loading />}> + <Switch> + <Route exact path="/" component={Home} /> + <Route exact path="/login" component={Login} /> + <Route exact path="/registration" component={Registration} /> + <Route exact path="/feed" component={Feed} /> + <Route exact path="/notifications" component={Notifications} /> + <Route path="/profile/:username" component={Profile} /> + </Switch> + </Suspense> + </div> + </SnackbarProvider> + ); +}; + + +export default Page; + |