all repos — caroster @ 25b044cdc2c4f79f286f1ff7fcf2ac916192f7da

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

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

 1import {useTranslation} from 'react-i18next';
 2import useEventStore from '../../stores/useEventStore';
 3import useToastStore from '../../stores/useToastStore';
 4import {
 5  useUpdateTravelMutation,
 6  useDeleteTravelMutation,
 7  EventByUuidDocument,
 8  Travel,
 9  EditTravelInput,
10  useUpdatePassengerMutation,
11} from '../../generated/graphql';
12
13interface Props {
14  travel: Travel;
15}
16
17const useActions = (props: Props) => {
18  const {travel} = props;
19  const {t} = useTranslation();
20  const event = useEventStore(s => s.event);
21  const addToast = useToastStore(s => s.addToast);
22  const [updateTravelMutation] = useUpdateTravelMutation();
23  const [deleteTravelMutation] = useDeleteTravelMutation();
24  const [updatePassenger] = useUpdatePassengerMutation();
25
26  const sendPassengerToWaitingList = async (passengerId: string) => {
27    try {
28      await updatePassenger({
29        variables: {
30          id: passengerId,
31          passengerUpdate: {
32            event: event.id,
33            travel: null,
34          },
35        },
36        refetchQueries: ['eventByUUID'],
37      });
38    } catch (error) {
39      console.error(error);
40      addToast(t('travel.errors.cant_remove_passenger'));
41    }
42  };
43
44  const updateTravel = async (travelUpdate: EditTravelInput) => {
45    try {
46      await updateTravelMutation({
47        variables: {
48          id: travel.id,
49          travelUpdate,
50        },
51        refetchQueries: ['eventByUUID'],
52      });
53    } catch (error) {
54      console.error(error);
55      addToast(t('travel.errors.cant_update'));
56    }
57  };
58
59  const removeTravel = async () => {
60    try {
61      await deleteTravelMutation({
62        variables: {
63          id: travel.id,
64        },
65        refetchQueries: [
66          {query: EventByUuidDocument, variables: {uuid: event.uuid}},
67        ],
68      });
69      addToast(t('travel.actions.removed'));
70    } catch (error) {
71      console.error(error);
72      addToast(t('travel.errors.cant_remove'));
73    }
74  };
75
76  return {sendPassengerToWaitingList, updateTravel, removeTravel};
77};
78
79export default useActions;