import { useMutation } from '@tanstack/react-query' import { useCallback } from 'react' import { Alert } from 'react-native' import { useApiClient } from '../../../hooks/use_api_client' import { useConversationMessages } from '../../../hooks/use_conversation_messages' import { Haptic } from '../../../utils/native_adapters' type UseDeleteAttachmentProps = { conversation_id: number attachmentId: string | undefined attachmentName: string } export function useDeleteAttachment({ conversation_id, attachmentId, attachmentName, }: UseDeleteAttachmentProps) { const apiClient = useApiClient() const { refetch } = useConversationMessages({ conversation_id }, { refetchOnMount: false }) const deleteAttachment = useCallback(() => { const url = `/me/conversations/${conversation_id}/message_attachments/${attachmentId}` return apiClient.chat.delete({ url }) }, [apiClient, conversation_id, attachmentId]) const { mutate: handleDeleteAttachment } = useMutation({ mutationFn: deleteAttachment, mutationKey: ['deleteAttachment', attachmentId], onSuccess: () => { refetch() Haptic.notificationSuccess() }, onError: () => { Alert.alert( 'Oops', `We were unable to delete this ${attachmentName} attachment. Please try again.` ) }, }) return { handleDeleteAttachment, } }