import { useOrg } from '@components/Contexts/OrgContext'; import { useLHSession } from '@components/Contexts/LHSessionContext'; import { useEffect, useState, useMemo } from 'react'; interface Role { org: { id: number }; role: { id: number; role_uuid: string }; } function useAdminStatus() { const session = useLHSession() as any; const org = useOrg() as any; const [isAdmin, setIsAdmin] = useState(null); const [loading, setLoading] = useState(true); const userRoles = useMemo(() => session?.data?.roles || [], [session?.data?.roles]); useEffect(() => { if (session.status === 'authenticated' && org?.id) { const isAdminVar = userRoles.some((role: Role) => { return ( role.org.id === org.id && ( role.role.id === 1 || role.role.id === 2 || role.role.role_uuid === 'role_global_admin' || role.role.role_uuid === 'role_global_maintainer' ) ); }); setIsAdmin(isAdminVar); setLoading(false); // Set loading to false once the status is determined } else { setIsAdmin(false); setLoading(false); // Set loading to false if not authenticated or org not found } }, [session.status, userRoles, org.id]); return { isAdmin, loading }; } export default useAdminStatus;