diff --git a/src/api/getReservationListByWeek.ts b/src/api/getReservationListByWeek.ts new file mode 100644 index 0000000000000000000000000000000000000000..56f6114a255cfb667385654758f67ecac7cbc35e --- /dev/null +++ b/src/api/getReservationListByWeek.ts @@ -0,0 +1,18 @@ +import axios from 'axios'; +import { ReservationType } from 'types/ReservationType'; +import { formatDate } from './util/formatDate'; + +/** + * @async + * Perform GET to get a list of all the reservations inserted by the current user given a week. + * @param {Date | null} week range. + * @returns a list of reservations. + */ +export const getReservationsListByWeek = async ( + week: Date | null, +): Promise<ReservationType[]> => + week !== null + ? axios(`/api/web/reservations/week/${formatDate(week)}/`).then( + (res) => res.data, + ) + : []; diff --git a/src/hooks/useReservationsListByWeek.ts b/src/hooks/useReservationsListByWeek.ts new file mode 100644 index 0000000000000000000000000000000000000000..6e3345fb9bcb762e0b9282c2191b85e032982d3a --- /dev/null +++ b/src/hooks/useReservationsListByWeek.ts @@ -0,0 +1,23 @@ +import { getReservationsListByWeek } from 'api/getReservationListByWeek'; +import { getReservationsList } from 'api/getReservationsList'; +import { useMemo, useState } from 'react'; +import { ReservationType } from 'types/ReservationType'; + +export const useReservationsListByWeek = ( + week: Date | null, +): ReservationType[] => { + const [reservationList, setReservationList] = useState<ReservationType[]>([]); + useMemo(() => { + let isMounted = true; + + getReservationsListByWeek(week).then((list) => { + if (isMounted) { + setReservationList(list); + } + }); + return () => { + isMounted = false; + }; + }, [week]); + return reservationList; +};