all repos — caroster @ v0.9.0

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

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

 1import {useTranslation} from 'react-i18next';
 2import useToastsStore from '../../stores/useToastStore';
 3import useAddToEvents from '../../hooks/useAddToEvents';
 4import {
 5  Event,
 6  EventByUuidDocument,
 7  useCreateTravelMutation,
 8  TravelInput,
 9  FindUserVehiclesDocument,
10} from '../../generated/graphql';
11
12interface Props {
13  event: Event;
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    try {
25      await createTravelMutation({
26        variables: {travel: travelInput},
27        refetchQueries: [
28          {
29            query: EventByUuidDocument,
30            variables: {
31              uuid: event.uuid,
32            },
33          },
34          {
35            query: FindUserVehiclesDocument,
36          },
37        ],
38      });
39      addToEvent(event.id);
40      addToast(t('travel.creation.created'));
41    } catch (error) {
42      console.error(error);
43      addToast(t('travel.errors.cant_create'));
44    }
45  };
46
47  return {createTravel};
48};
49
50export default useActions;