frontend/containers/EventTypeCard/BasicAction.tsx (view raw)
1import {Button} from '@mui/material';
2import {useTranslation} from 'react-i18next';
3import useEventCreationStore from '../../stores/useEventCreationStore';
4import {ProfileDocument, useCreateEventMutation} from '../../generated/graphql';
5import useLocale from '../../hooks/useLocale';
6import useAddToEvents from '../../hooks/useAddToEvents';
7import {useRouter} from 'next/router';
8import {useSession} from 'next-auth/react';
9
10type Props = {};
11
12const BasicAction = (props: Props) => {
13 const {t} = useTranslation();
14 const router = useRouter();
15 const {locale} = useLocale();
16 const event = useEventCreationStore(s => s.event);
17 const [createEvent] = useCreateEventMutation();
18 const {addToEvent: addToUserEvents} = useAddToEvents();
19 const session = useSession();
20 const profile = session?.data?.profile;
21
22 const onClick = async () => {
23 try {
24 const {data} = await createEvent({
25 variables: {
26 eventData: {
27 ...event,
28 lang: locale,
29 email: event.email || profile?.email,
30 },
31 },
32 refetchQueries: [ProfileDocument],
33 });
34 const createdEvent = data.createEvent.data;
35 addToUserEvents(createdEvent.id);
36 useEventCreationStore.persist.clearStorage();
37 router.push(`/${locale}/e/${createdEvent.attributes.uuid}`);
38 } catch (error) {
39 console.error(error);
40 }
41 };
42
43 return (
44 <Button
45 fullWidth
46 variant="outlined"
47 onClick={onClick}
48 >{t`event.creation.basic.button`}</Button>
49 );
50};
51
52export default BasicAction;