import { useCallback } from 'react' import { sendPixelEvent } from '../pixel/usePixelSendEvent' import type { MinimalOrderFormItem } from './useUpdateQuantityWithPixel' import { orderFormItemToPixelProduct } from './useUpdateQuantityWithPixel' export type RemoveItemWithPixel =

( item: P & T ) => R export interface UseRemoveItemWithPixel { removeItemWithPixel: RemoveItemWithPixel } export interface RemoveItemWithPixelParams { removeItem: (item: T) => R } export function removeItemWithPixel({ removeItem, }: RemoveItemWithPixelParams): RemoveItemWithPixel { return (item): R => { const removeItemResult = removeItem(item) const pixelEventProduct = orderFormItemToPixelProduct(item) sendPixelEvent({ type: 'vtex:removeFromCart', data: { products: [pixelEventProduct], }, }) return removeItemResult } } export function useRemoveItemWithPixel({ removeItem, }: RemoveItemWithPixelParams): UseRemoveItemWithPixel { const removeItemWithPixelCallback = useCallback( (item) => removeItemWithPixel({ removeItem })(item), [removeItem] ) return { removeItemWithPixel: removeItemWithPixelCallback } }