import React, {useRef} from 'react'; import Bluebird from 'bluebird'; import { makeStyles } from '@material-ui/core/styles'; import { Card, Container, LinearProgress, Divider } 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, useProfile } from '../../hooks/APIClient'; import { useAuth } from '../../hooks/useAuth'; const useStyles = makeStyles(theme => ({ images: { height: theme.spacing(50), display: 'flex' } })); const PollCreation: React.FC = () => { const classes = useStyles(); const ref = useRef(null); const { enqueueSnackbar } = useSnackbar(); const { user } = useAuth(); const { mutate: updateFeed } = useFeed(); const { mutate: updateProfile } = useProfile(user?.username || ''); const { file: left, setFile: setLeft, resolve: resolveLeft, progress: leftProgress } = useS3Preupload(); const { file: right, setFile: setRight, resolve: resolveRight, progress: rightProgress } = useS3Preupload(); const handleSubmit = async () => { try { const [leftUrl, rightUrl] = await Bluebird.all([resolveLeft(), resolveRight()]); const contents = { left: { url: leftUrl }, right: { url: rightUrl } }; const description = ref?.current?.value; post('/polls/', { contents, description }).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' }); } }; return ( } handleAction={handleSubmit} isActionDisabled={!(left && right) || leftProgress > 0 || rightProgress > 0} > {user && }