all repos — caroster @ 354035ce0132854c931c73a0751dbe3d98a8ceb9

[Octree] Group carpool to your event https://caroster.io

app/src/containers/CreateEvent/Step2.js (view raw)

 1import React, {useState} from 'react';
 2import {makeStyles} from '@material-ui/core/styles';
 3import TextField from '@material-ui/core/TextField';
 4import Button from '@material-ui/core/Button';
 5import {useTranslation} from 'react-i18next';
 6import {DatePicker} from '@material-ui/pickers';
 7import moment from 'moment';
 8import {useHistory} from 'react-router-dom';
 9import {useToast} from '../../contexts/Toast';
10
11const Step2 = ({event, addToEvent, createEvent}) => {
12  const classes = useStyles();
13  const {t} = useTranslation();
14  const history = useHistory();
15  const {addToast} = useToast();
16
17  // States
18  const [date, setDate] = useState(!!event.date ? moment(event.date) : null);
19  const [address, setAddress] = useState(event.address ?? '');
20
21  const onCreate = async evt => {
22    if (evt.preventDefault) evt.preventDefault();
23    const eventData = {date: date?.toISOString(), address};
24    addToEvent(eventData);
25    const result = await createEvent(eventData);
26    if (!result) addToast(t('event.errors.cant_create'));
27    else history.push(`/e/${result.id}`);
28    return false;
29  };
30
31  return (
32    <form onSubmit={onCreate}>
33      <DatePicker
34        label={t('event.creation.date')}
35        value={date}
36        onChange={setDate}
37        fullWidth
38        format="DD.MM.YYYY"
39        disablePast
40        id="NewEventDate"
41        name="date"
42        cancelLabel={t('generic.cancel')}
43      />
44      <TextField
45        label={t('event.creation.address')}
46        fullWidth
47        margin="dense"
48        multiline
49        rows={4}
50        value={address}
51        onChange={e => setAddress(e.target.value)}
52        id="NewEventAddress"
53        name="address"
54      />
55      <Button
56        className={classes.button}
57        variant="contained"
58        color="secondary"
59        fullWidth
60        type="submit"
61        id="NewEventSubmit"
62      >
63        {t('generic.create')}
64      </Button>
65    </form>
66  );
67};
68
69const useStyles = makeStyles(theme => ({
70  button: {
71    marginTop: theme.spacing(2),
72  },
73}));
74
75export default Step2;