import { useMutation } from '@tanstack/react-query' import { ApiResource, ConversationResource, ResourceObject } from '../../types' import { throwResponseError } from '../../utils/response_error' import { useApiClient } from '../use_api_client' interface Props { groupId: number title?: string genderId?: string | null onSuccess: (conversationId: number) => void } export function useGroupsConversationCreate({ groupId, title, genderId, onSuccess }: Props) { const apiClient = useApiClient() return useMutation({ throwOnError: true, onSuccess: result => { onSuccess(result.data.id) }, mutationFn: () => apiClient.groups .post>({ url: `/me/groups/${groupId}/chat_conversation_payload`, data: { data: { type: 'GroupChatConversationPayload', attributes: { title, }, }, }, }) .then(res => res.data.value) .then(payload => apiClient.chat.post>({ url: '/me/conversations', data: { data: { type: 'Conversation', attributes: { payload, ...(genderId ? { gender_id: genderId } : {}), }, }, }, }) ) .catch(throwResponseError), }) } interface ChatConversationPayload extends ResourceObject { value: string }