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