frontend/containers/NewTravelDialog/useActions.ts (view raw)
1import moment from 'moment';
2import {useTranslation} from 'react-i18next';
3import useToastsStore from '../../stores/useToastStore';
4import useAddToEvents from '../../hooks/useAddToEvents';
5import {
6 Event,
7 EventByUuidDocument,
8 useCreateTravelMutation,
9 TravelInput,
10 FindUserVehiclesDocument,
11} from '../../generated/graphql';
12
13interface Props {
14 event: Event;
15}
16
17const useActions = (props: Props) => {
18 const {event} = props;
19 const {t} = useTranslation();
20 const addToast = useToastsStore(s => s.addToast);
21 const {addToEvent} = useAddToEvents();
22 const [createTravelMutation] = useCreateTravelMutation();
23
24 const createTravel = async (travelInput: TravelInput) => {
25 try {
26 await createTravelMutation({
27 variables: {travel: travelInput},
28 refetchQueries: [
29 {
30 query: EventByUuidDocument,
31 variables: {
32 uuid: event.uuid,
33 },
34 },
35 {
36 query: FindUserVehiclesDocument,
37 },
38 ],
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;