From e5b5a3014347e6ec094d71a00ae71ec5c1022eeb Mon Sep 17 00:00:00 2001
From: Alberto Defendi <1369-ahl-berto@users.noreply.gitlab.inf.unibz.it>
Date: Wed, 23 Jun 2021 08:27:55 +0200
Subject: [PATCH] Hook to return role object.

---
 .../ReservationListSwitcher.tsx               |  5 +++--
 src/hooks/useRoleObject.ts                    | 21 +++++++++++++++++++
 2 files changed, 24 insertions(+), 2 deletions(-)
 create mode 100644 src/hooks/useRoleObject.ts

diff --git a/src/components/Dashboard/ReservationPage/ReservationList/ReservationListSwitcher.tsx b/src/components/Dashboard/ReservationPage/ReservationList/ReservationListSwitcher.tsx
index 0d2057b..8d8d2db 100644
--- a/src/components/Dashboard/ReservationPage/ReservationList/ReservationListSwitcher.tsx
+++ b/src/components/Dashboard/ReservationPage/ReservationList/ReservationListSwitcher.tsx
@@ -3,13 +3,14 @@ import { useRole } from 'hooks/useRole';
 import { Roles } from 'roles/userRoles';
 import { ReservationsListByWeek } from 'components/Dashboard/ReservationPage/ReservationList/ReservationsListByWeek';
 import { ReservationList } from 'components/Dashboard/ReservationPage/ReservationList/ReservationList';
+import { useRoleObject } from 'hooks/useRoleObject';
 
 export const ReservationListSwitcher: FC = () => {
-  const [role] = useRole();
+  const role = useRoleObject();
 
   return (
     <>
-      {role === Roles.operator ? (
+      {typeof role !== undefined && role?.isOperator ? (
         <ReservationsListByWeek />
       ) : (
         <ReservationList />
diff --git a/src/hooks/useRoleObject.ts b/src/hooks/useRoleObject.ts
new file mode 100644
index 0000000..269caa4
--- /dev/null
+++ b/src/hooks/useRoleObject.ts
@@ -0,0 +1,21 @@
+import { getRole } from 'api/getRole';
+import { getRoleObject } from 'api/getRoleObject';
+import { useEffect, useState } from 'react';
+import { RoleObjectType } from 'types/RoleObjectType';
+
+export const useRoleObject = (): RoleObjectType | undefined => {
+  const [role, setRole] = useState<RoleObjectType>();
+
+  useEffect(() => {
+    let isMounted = true;
+    getRoleObject().then((responseRole) => {
+      if (isMounted) {
+        setRole(responseRole);
+      }
+    });
+    return () => {
+      isMounted = false;
+    };
+  }, []);
+  return role;
+};
-- 
GitLab