import { useQuery } from '@tanstack/react-query'; import { apiGet } from '@/api/client'; import { useAuthStore } from '@/store/authStore'; import { useEffect } from 'react'; interface PermissionsResponse { permissions: string[]; denied_permissions: string[]; field_permissions: Record; is_system_admin: boolean; } /** * Fetches the current user's resolved permissions from /api/v1/auth/me/permissions * and stores them in the authStore. */ export function useUserPermissions() { const { isAuthenticated, setPermissions } = useAuthStore(); const { data, isSuccess } = useQuery({ queryKey: ['user-permissions'], queryFn: () => apiGet('/auth/me/permissions'), enabled: isAuthenticated, staleTime: 5 * 60 * 1000, retry: 1, }); useEffect(() => { if (isSuccess && data) { setPermissions( data.permissions || [], data.is_system_admin || false, data.field_permissions || {}, ); } }, [isSuccess, data, setPermissions]); return { data, isSuccess }; }