diff options
author | eug-vs <eug-vs@keemail.me> | 2020-08-10 00:28:39 +0300 |
---|---|---|
committer | eug-vs <eug-vs@keemail.me> | 2020-08-10 00:28:39 +0300 |
commit | 7ba15a22d1bd57e7c26ff2d5fccf5505aaf8619e (patch) | |
tree | 8a71d8dd4bf89f09f14aee2636f519572e95f891 /src/pages/HomePage/HomePage.tsx | |
parent | dfa6f0a8d1415539e1ff6a3ca848627bbe87b470 (diff) | |
download | which-ui-7ba15a22d1bd57e7c26ff2d5fccf5505aaf8619e.tar.gz |
refactor: move pages -> containers
Diffstat (limited to 'src/pages/HomePage/HomePage.tsx')
-rw-r--r-- | src/pages/HomePage/HomePage.tsx | 203 |
1 files changed, 0 insertions, 203 deletions
diff --git a/src/pages/HomePage/HomePage.tsx b/src/pages/HomePage/HomePage.tsx deleted file mode 100644 index b1dc506..0000000 --- a/src/pages/HomePage/HomePage.tsx +++ /dev/null @@ -1,203 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import { useHistory } from 'react-router-dom'; -import { - Typography, - Divider, - Grid, - Button, - Link, - useMediaQuery -} from '@material-ui/core/'; -import { makeStyles, useTheme } from '@material-ui/core/styles'; -import TrendingUpIcon from '@material-ui/icons/TrendingUp'; -import { Rating } from '@material-ui/lab'; -import { Feedback } from 'which-types'; - -import { useAuth } from '../../hooks/useAuth'; -import { get } from '../../requests'; -import ReviewCard from '../../components/ReviewCard/ReviewCard'; -import ReviewForm from './ReviewForm'; - -const useStyles = makeStyles(theme => ({ - root: { - overflow: 'hidden', - padding: theme.spacing(0, 2) - }, - logo: { - width: theme.spacing(20), - height: theme.spacing(20) - }, - score: { - fontWeight: 'bold' - }, - signup: { - marginLeft: theme.spacing(2) - }, - reviews: { - [theme.breakpoints.up('md')]: { - padding: theme.spacing(0, 10) - } - } -})); - -const HomePage: React.FC = () => { - const [feedbacks, setFeedbacks] = useState<Feedback[]>([]); - const classes = useStyles(); - const history = useHistory(); - const { isAuthenticated, user } = useAuth(); - const theme = useTheme(); - const isMobile = useMediaQuery(theme.breakpoints.down('sm')); - - const rating = feedbacks.length && feedbacks.reduce( - (acc: number, feedback: Feedback) => acc + feedback.score, - 0 - ) / feedbacks.length; - - useEffect(() => { - get('/feedback').then(response => { - setFeedbacks(response.data); - }); - }, []); - - const handleLetsGo = () => { - history.push('/feed'); - }; - - const handleSignUp = () => { - history.push('/registration'); - }; - - const GithubLink = <Link href="https://github.com/which-ecosystem">GitHub</Link>; - const TypescriptLink = <Link href="https://www.typescriptlang.org/">Typescript</Link>; - const ReactLink = <Link href="https://reactjs.org/">React</Link>; - const FeathersLink = <Link href="https://feathersjs.com">Feathers</Link>; - const MUILink = <Link href="https://material-ui.com">Material-UI</Link>; - const EmailLink = <Link href="mailto: eug-vs@keemail.me">eug-vs@keemail.me</Link>; - - const Reviews = ( - <div className={classes.reviews}> - {feedbacks.map(feedback => <ReviewCard feedback={feedback} />)} - </div> - ); - - const FeedbackSection = feedbacks.findIndex((feedback: Feedback) => feedback.author._id === user?._id) >= 0 ? ( - <p> - You have already left feedback for this version. - If you have more to say, please open GitHub issue or contact us directly via email: {EmailLink}. - Alternatively, you can just wait for another application patch to come out. - </p> - ) : ( - <> - <p> - Here you can share your thougts about Which with us! - Note that you can ony leave feedback once per application version (there will be plenty of them later). - </p> - {isAuthenticated ? <ReviewForm /> : ( - <> - <p> You must be authorized to leave feedback.</p> - <Button - variant="outlined" - color="primary" - onClick={handleSignUp} - > - sign in - </Button> - </> - )} - </> - ); - - return ( - <div className={classes.root}> - <Grid container spacing={4}> - <Grid item xs={12} md={4}> - <Grid container direction="column" spacing={1} alignItems="center"> - <Grid item> - <img src={`${process.env.PUBLIC_URL}/which-logo-512.png`} alt="logo" className={classes.logo} /> - </Grid> - <Grid item> - {rating !== 0 && <Rating value={rating} readOnly size="large" />} - </Grid> - <Grid item> - {rating !== 0 && ( - <Typography variant="h5" className={classes.score}> - User score: {rating.toFixed(1)} - </Typography> - )} - </Grid> - </Grid> - {isMobile || Reviews} - </Grid> - <Grid item xs={12} md={5}> - <Grid container direction="column" spacing={6}> - <Grid item> - <Typography variant="h4"> Which one to choose? </Typography> - <Divider /> - <Typography> - <p> - Have you ever found yourself stuck between two options, not being able to choose any? - This is exactly the problem we are going to solve! - </p> - <p>Share your minor everyday uncertainties with the whole world and see what others think!</p> - <Button variant="contained" color="primary" size="large" onClick={handleLetsGo}> - {'let\'s go!'} - </Button> - {!isAuthenticated && ( - <Button - variant="outlined" - color="primary" - size="large" - className={classes.signup} - onClick={handleSignUp} - > - sign up - </Button> - )} - </Typography> - </Grid> - <Grid item> - <Typography variant="h4"> About the project </Typography> - <Divider /> - <Typography> - <p> - The project is written in {TypescriptLink} and features {ReactLink}, {FeathersLink}, and {MUILink}. - It is currently open-source and you can visit our {GithubLink} (make sure to star our repositories)! - </p> - <p> - We encourage any developer to check it out. Feel free to open issues and create Pull Requests! - </p> - <p> - All the development process is being tracked on the KanBan board (thanks GitHub). - You can always check it to see what is the current state of the project. - </p> - <Button - variant="outlined" - color="primary" - startIcon={<TrendingUpIcon />} - href="https://github.com/orgs/which-ecosystem/projects/1" - > - track our progress - </Button> - </Typography> - </Grid> - <Grid item> - <Typography variant="h4"> Leave feedback </Typography> - <Divider /> - <Typography> - {FeedbackSection} - </Typography> - </Grid> - {isMobile && ( - <Grid item> - {Reviews} - </Grid> - )} - </Grid> - </Grid> - </Grid> - </div> - ); -}; - -export default HomePage; - |