diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/components/Feed/Feed.tsx | 2 | ||||
| -rw-r--r-- | src/components/Header/SearchBar.tsx | 5 | ||||
| -rw-r--r-- | src/components/PollCard/PollCard.tsx | 26 | ||||
| -rw-r--r-- | src/components/UploadImage/UploadImage.tsx | 23 | ||||
| -rw-r--r-- | src/hooks/useNavigate.tsx | 1 | ||||
| -rw-r--r-- | src/pages/FeedPage/FeedPage.tsx | 3 | ||||
| -rw-r--r-- | src/pages/ProfilePage/ProfilePage.tsx | 1 | 
7 files changed, 33 insertions, 28 deletions
diff --git a/src/components/Feed/Feed.tsx b/src/components/Feed/Feed.tsx index c532f45..5814711 100644 --- a/src/components/Feed/Feed.tsx +++ b/src/components/Feed/Feed.tsx @@ -46,6 +46,8 @@ const Feed: React.FC<PropTypes> = ({ polls }) => {                  rowRenderer={RenderItem}                  scrollTop={scrollTop}                  width={width} +                containerStyle={{ pointerEvents: 'auto' }} +                overscanRowCount={1}                />              </div>            )} diff --git a/src/components/Header/SearchBar.tsx b/src/components/Header/SearchBar.tsx index 253e77f..ba0943b 100644 --- a/src/components/Header/SearchBar.tsx +++ b/src/components/Header/SearchBar.tsx @@ -31,6 +31,9 @@ const useStyles = makeStyles(theme => ({      position: 'absolute',      width: '100%',      top: theme.spacing(5) +  }, +  listItem: { +    padding: 0    }  })); @@ -77,7 +80,7 @@ const SearchBar: React.FC = () => {            {            results.map((result, index) => (              <div key={result._id}> -              <ListItem button onClick={handleNavigate(index)}> +              <ListItem button onClick={handleNavigate(index)} className={classes.listItem}>                  <UserStrip user={result} />                </ListItem>                {(index < results.length - 1) && <Divider />} diff --git a/src/components/PollCard/PollCard.tsx b/src/components/PollCard/PollCard.tsx index 12f7198..f5a5762 100644 --- a/src/components/PollCard/PollCard.tsx +++ b/src/components/PollCard/PollCard.tsx @@ -7,9 +7,11 @@ import {  } from '@material-ui/core/';  import { Which, Poll } from 'which-types';  import { useSnackbar } from 'notistack'; +  import PercentageBar from './PercentageBar';  import UserStrip from '../UserStrip/UserStrip';  import { post } from '../../requests'; +import { useAuth } from '../../hooks/useAuth';  interface PropTypes {    initialPoll: Poll; @@ -58,20 +60,30 @@ const PollCard: React.FC<PropTypes> = ({ initialPoll }) => {    const classes = useStyles();    const { author, contents: { left, right }, vote } = poll;    const { enqueueSnackbar } = useSnackbar(); +  const { isAuthenticated } = useAuth();    const date: string = new Date(poll.createdAt).toLocaleString('default', DATE_FORMAT);    const handleVote = (which: Which) => { -    if (vote) { -      enqueueSnackbar('You have already voted', { +    if (!isAuthenticated()) { +      enqueueSnackbar('Unauthorized users can not vote in polls', {          variant: 'error'        }); -      return; -    } -    post('votes/', { which, pollId: poll._id }).then(response => { +    } else if (vote) { +      enqueueSnackbar('You have already voted in this poll', { +        variant: 'error' +      }); +    } else { +      const newVote = ({ which, pollId: poll._id }); +      post('votes/', newVote);        poll.contents[which].votes += 1; -      poll.vote = response.data; +      poll.vote = { +        _id: '', +        authorId: '', +        createdAt: new Date(), +        ...newVote +      };        setPoll({ ...poll }); -    }); +    }    };    const handleLeft = () => handleVote('left'); diff --git a/src/components/UploadImage/UploadImage.tsx b/src/components/UploadImage/UploadImage.tsx index f5e680d..8ad65d5 100644 --- a/src/components/UploadImage/UploadImage.tsx +++ b/src/components/UploadImage/UploadImage.tsx @@ -6,7 +6,6 @@ import DialogActions from '@material-ui/core/DialogActions';  import DialogContent from '@material-ui/core/DialogContent';  import DialogContentText from '@material-ui/core/DialogContentText';  import DialogTitle from '@material-ui/core/DialogTitle'; -import get from 'axios';  interface PropTypes {    isOpen: boolean; @@ -15,8 +14,7 @@ interface PropTypes {  }  const UploadImage: React.FC<PropTypes> = ({ setIsOpen, isOpen, callback }) => { -  const [url, setUrl] = useState(''); -  const [isError, setIsError] = useState(false); +  const [url, setUrl] = useState<string>('');    const handleClose = () => { @@ -24,19 +22,8 @@ const UploadImage: React.FC<PropTypes> = ({ setIsOpen, isOpen, callback }) => {    };    const handleSubmit = () => { -    get(url).then(res => { -      if (res.headers['content-type'] === 'image/jpeg') { -        callback(url || ''); -        setIsOpen(false); -        setIsError(false); -      } else { -        // console.warn(res); TODO: handle error if response status is ok but not an image -        setIsError(true); -      } -    }).catch(() => { -      // console.warn(err); TODO: handle error if resposne status is not ok -      setIsError(true); -    }); +    handleClose(); +    callback(url || '');    };    const handleChange = (event:React.ChangeEvent<HTMLInputElement>) => { @@ -49,7 +36,7 @@ const UploadImage: React.FC<PropTypes> = ({ setIsOpen, isOpen, callback }) => {          <DialogTitle>Upload an Image</DialogTitle>          <DialogContent>            <DialogContentText> -            Unfortunetly we do not support uploading images yet. Please provide a valid URL to your image. +            Unfortunetly we do not support uploading images yet. Please provide a valid URL to your image:            </DialogContentText>            <TextField              autoFocus @@ -60,8 +47,6 @@ const UploadImage: React.FC<PropTypes> = ({ setIsOpen, isOpen, callback }) => {              fullWidth              autoComplete="off"              onChange={handleChange} -            error={isError} -            helperText={isError === true ? 'invalid Url!' : ''}            />          </DialogContent>          <DialogActions> diff --git a/src/hooks/useNavigate.tsx b/src/hooks/useNavigate.tsx index befc529..47de4df 100644 --- a/src/hooks/useNavigate.tsx +++ b/src/hooks/useNavigate.tsx @@ -24,6 +24,7 @@ const useProvideNavigation = () => {    const navigate: ContextType['navigate'] = (prefix, id?) => {      setPage({ prefix, id }); +    window.scrollTo(0, 0);    };    return { page, setPage, navigate }; diff --git a/src/pages/FeedPage/FeedPage.tsx b/src/pages/FeedPage/FeedPage.tsx index d29103a..b591141 100644 --- a/src/pages/FeedPage/FeedPage.tsx +++ b/src/pages/FeedPage/FeedPage.tsx @@ -19,7 +19,8 @@ const FeedPage: React.FC = () => {    const addPoll = (poll: Poll): void => {      polls.unshift(poll); -    setPolls([...polls]); +    setPolls([]); +    setPolls(polls);    }; diff --git a/src/pages/ProfilePage/ProfilePage.tsx b/src/pages/ProfilePage/ProfilePage.tsx index 2c18466..b7106bb 100644 --- a/src/pages/ProfilePage/ProfilePage.tsx +++ b/src/pages/ProfilePage/ProfilePage.tsx @@ -22,6 +22,7 @@ const ProfilePage: React.FC = () => {          setUserInfo(response.data);        });        get(`/profiles/${id}`).then(response => { +        setPolls([]);          setPolls(response.data);          setTotalVotes(response.data.reduce(            (total: number, current: Poll) => {  |