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;