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