all repos — caroster @ 25ef569b9aff78df82eea6d516cca3a4aeccbb8a

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

frontend/containers/AddToMyEventDialog/index.tsx (view raw)

 1import {forwardRef} from 'react';
 2import { styled } from '@mui/material/styles';
 3import {useRouter} from 'next/router';
 4import Dialog from '@mui/material/Dialog';
 5import DialogTitle from '@mui/material/DialogTitle';
 6import DialogActions from '@mui/material/DialogActions';
 7import DialogContent from '@mui/material/DialogContent';
 8import DialogContentText from '@mui/material/DialogContentText';
 9import Icon from '@mui/material/Icon';
10import Slide from '@mui/material/Slide';
11import Button from '@mui/material/Button';
12import IconButton from '@mui/material/IconButton';
13import {useTranslation} from 'react-i18next';
14import useAddToEvents from '../../hooks/useAddToEvents';
15
16const PREFIX = 'AddToMyEventDialog';
17
18const classes = {
19  close: `${PREFIX}-close`
20};
21
22const StyledSlide = styled(Slide)((
23  {
24    theme
25  }
26) => ({
27  [`& .${classes.close}`]: {
28    position: 'absolute',
29    top: theme.spacing(1),
30    right: theme.spacing(0.5),
31  }
32}));
33
34const AddToMyEventDialog = ({event, open, onClose}) => {
35  const {t} = useTranslation();
36  const router = useRouter();
37
38  const {addToEvent} = useAddToEvents();
39
40  const onRedirect = path => {
41    addToEvent(event.id);
42    router.push(path);
43  };
44
45  if (!event) return null;
46
47  return (
48    <Dialog open={open} TransitionComponent={Transition} onClose={onClose}>
49      <IconButton onClick={onClose} className={classes.close} size="large">
50        <Icon>close</Icon>
51      </IconButton>
52      <DialogTitle>
53        {t('event.add_to_my_events.title', {eventName: event.name})}
54      </DialogTitle>
55      <DialogContent>
56        <DialogContentText
57          dangerouslySetInnerHTML={{
58            __html: t('event.add_to_my_events.text_html', {
59              eventName: event.name,
60            }),
61          }}
62        />
63      </DialogContent>
64      <DialogActions>
65        <Button
66          id="AddToMyEventLogin"
67          onClick={() => onRedirect(`/auth/login`)}
68        >
69          {t('event.add_to_my_events.login')}
70        </Button>
71        <Button
72          id="AddToMyEventRegister"
73          onClick={() => onRedirect(`/auth/register`)}
74          color="primary"
75        >
76          {t('event.add_to_my_events.register')}
77        </Button>
78      </DialogActions>
79    </Dialog>
80  );
81};
82
83const Transition = forwardRef(function Transition(props, ref) {
84  return <StyledSlide direction="up" ref={ref} {...props} />;
85});
86
87export default AddToMyEventDialog;