all repos — caroster @ v8.1

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

frontend/containers/EventTypeCard/BasicAction.tsx (view raw)

 1import {Button} from '@mui/material';
 2import {useTranslation} from 'next-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;