all repos — caroster @ 27332dc9778a133a03349f1ebc56af222fff16f0

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

frontend/containers/NewTravelDialog/useActions.ts (view raw)

 1import {useTranslation} from 'next-i18next';
 2import {PureQueryOptions} from '@apollo/client/core';
 3import useToastsStore from '../../stores/useToastStore';
 4import useAddToEvents from '../../hooks/useAddToEvents';
 5import {
 6  EventByUuidDocument,
 7  useCreateTravelMutation,
 8  TravelInput,
 9  Event,
10} from '../../generated/graphql';
11
12interface Props {
13  event: Event & {id: string};
14}
15
16const useActions = (props: Props) => {
17  const {event} = props;
18  const {t} = useTranslation();
19  const addToast = useToastsStore(s => s.addToast);
20  const {addToEvent} = useAddToEvents();
21  const [createTravelMutation] = useCreateTravelMutation();
22
23  const createTravel = async (travelInput: TravelInput) => {
24    const refetchQueries: Array<PureQueryOptions> = [
25      {
26        query: EventByUuidDocument,
27        variables: {
28          uuid: event.uuid,
29        },
30      },
31    ];
32
33    try {
34      await createTravelMutation({
35        variables: {
36          travel: travelInput,
37        },
38        refetchQueries,
39      });
40      addToEvent(event.id);
41      addToast(t('travel.creation.created'));
42    } catch (error) {
43      console.error(error);
44      addToast(t('travel.errors.cant_create'));
45    }
46  };
47
48  return {createTravel};
49};
50
51export default useActions;