import { useQuery, UseQueryOptions } from '@tanstack/react-query' import { get, handleError } from 'data/fetchers' import type { ResponseError, Role } from 'types' import { organizationKeys } from './keys' export type OrganizationRolesVariables = { slug?: string } export type OrganizationRolesResponse = { roles: Role[] } export async function getOrganizationRoles( { slug }: OrganizationRolesVariables, signal?: AbortSignal ) { if (!slug) throw new Error('slug is required') const { data, error } = await get('/platform/organizations/{slug}/roles', { params: { path: { slug } }, signal, }) if (error) handleError(error) return { roles: data } as unknown as OrganizationRolesResponse } export type OrganizationRolesData = Awaited> export type OrganizationRolesError = ResponseError export const useOrganizationRolesQuery = ( { slug }: OrganizationRolesVariables, { enabled = true, ...options }: UseQueryOptions = {} ) => useQuery( organizationKeys.roles(slug), ({ signal }) => getOrganizationRoles({ slug }, signal), { enabled: enabled && typeof slug !== 'undefined', ...options, } )