aboutsummaryrefslogtreecommitdiff
path: root/src/containers/PollCreation/PollCreation.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/containers/PollCreation/PollCreation.tsx')
-rw-r--r--src/containers/PollCreation/PollCreation.tsx41
1 files changed, 21 insertions, 20 deletions
diff --git a/src/containers/PollCreation/PollCreation.tsx b/src/containers/PollCreation/PollCreation.tsx
index 18c3c6b..68f41d2 100644
--- a/src/containers/PollCreation/PollCreation.tsx
+++ b/src/containers/PollCreation/PollCreation.tsx
@@ -1,22 +1,17 @@
import React from 'react';
import Bluebird from 'bluebird';
-import { useHistory } from 'react-router-dom';
import { makeStyles } from '@material-ui/core/styles';
-import {
- IconButton,
- Card,
- Container,
- LinearProgress
-} from '@material-ui/core';
+import { Card, Container, LinearProgress } from '@material-ui/core';
import SendIcon from '@material-ui/icons/Send';
import { useSnackbar } from 'notistack';
import useS3Preupload from './useS3Preupload';
import ImageInput from './ImageInput';
import ModalScreen from '../../components/ModalScreen/ModalScreen';
+import Message from '../../components/Message/Message';
import UserStrip from '../../components/UserStrip/UserStrip';
import { post } from '../../requests';
-import { useFeed } from '../../hooks/APIClient';
+import { useFeed, useProfile } from '../../hooks/APIClient';
import { useAuth } from '../../hooks/useAuth';
@@ -30,10 +25,10 @@ const useStyles = makeStyles(theme => ({
const PollCreation: React.FC = () => {
const classes = useStyles();
- const history = useHistory();
const { user } = useAuth();
const { enqueueSnackbar } = useSnackbar();
const { mutate: updateFeed } = useFeed();
+ const { mutate: updateProfile } = useProfile(user?.username || '');
const {
file: left,
setFile: setLeft,
@@ -56,26 +51,23 @@ const PollCreation: React.FC = () => {
right: { url: rightUrl }
};
- history.push('/feed');
-
post('/polls/', { contents }).then(() => {
updateFeed();
+ updateProfile();
enqueueSnackbar('Your poll has been successfully created!', { variant: 'success' });
});
} catch (error) {
enqueueSnackbar('Failed to create a poll. Please, try again.', { variant: 'error' });
- history.push('/feed');
}
};
- const submitIcon = (
- <IconButton onClick={handleSubmit} disabled={!(left && right)}>
- <SendIcon />
- </IconButton>
- );
-
return (
- <ModalScreen title="Create a poll" rightIcon={submitIcon}>
+ <ModalScreen
+ title="Create a poll"
+ actionIcon={<SendIcon />}
+ handleAction={handleSubmit}
+ isActionDisabled={!(left && right) || leftProgress > 0 || rightProgress > 0}
+ >
<Container maxWidth="sm" disableGutters>
<Card elevation={3}>
{user && <UserStrip user={user} info="" />}
@@ -83,8 +75,17 @@ const PollCreation: React.FC = () => {
<ImageInput callback={setLeft} progress={leftProgress} />
<ImageInput callback={setRight} progress={rightProgress} />
</div>
- {(leftProgress > 0 || rightProgress > 0) && <LinearProgress color="primary" />}
</Card>
+ {(leftProgress > 0 || rightProgress > 0) && (
+ <>
+ <LinearProgress color="primary" />
+ <Message
+ tagline="You can close this window now"
+ message="We will upload your images in the background."
+ noMargin
+ />
+ </>
+ )}
</Container>
</ModalScreen>
);