import { queryOptions } from '@tanstack/react-query' import { ApiCollection, AppGrantsResource } from '../types' import { throwResponseError } from '../utils/response_error' import { FIVE_MINUTES } from '../utils/time' import { useApiGet } from './use_api' import { ApiClient, App } from './use_api_client' import { getRequestQueryKey } from './use_suspense_api' export const appGrantsRequestArgs = { url: '/me/app_grants', data: { fields: { AppGrant: ['create_conversations', 'app_name'], }, }, app: 'chat' as App, } export const appGrantsQueryOptions = (apiClient: ApiClient) => queryOptions({ queryKey: getRequestQueryKey(appGrantsRequestArgs), queryFn: (): Promise> => apiClient[appGrantsRequestArgs.app] .get>(appGrantsRequestArgs) .catch(throwResponseError), staleTime: FIVE_MINUTES, }) export function useAppGrants() { return useApiGet(appGrantsRequestArgs, { staleTime: FIVE_MINUTES, }) } export function useCanCreateConversations(): boolean { const { data: appGrants = [] } = useAppGrants() return appGrants.some(appGrant => appGrant.createConversations) }