From e74d0f8bb2df83c50cec7f628b6a131c99ff5b7a Mon Sep 17 00:00:00 2001 From: Alberto Defendi <1369-ahl-berto@users.noreply.gitlab.inf.unibz.it> Date: Mon, 21 Jun 2021 15:46:58 +0200 Subject: [PATCH] Call to get week reservations. --- src/api/getReservationListByWeek.ts | 18 ++++++++++++++++++ src/hooks/useReservationsListByWeek.ts | 23 +++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 src/api/getReservationListByWeek.ts create mode 100644 src/hooks/useReservationsListByWeek.ts diff --git a/src/api/getReservationListByWeek.ts b/src/api/getReservationListByWeek.ts new file mode 100644 index 0000000..56f6114 --- /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 0000000..6e3345f --- /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; +}; -- GitLab