commerce/framework/elasticpath/cart/use-remove-item.tsx
GunaTrika 9d83146aff Cart Implementation
- Add to cart
 - Update cart
 - Delete cart
 - Remove cart item
 - Cart and cart item normalization
2021-09-17 15:16:40 +05:30

32 lines
880 B
TypeScript

import { useCallback } from 'react'
import { MutationHook } from '@commerce/utils/types'
import useRemoveItem, { UseRemoveItem } from '@commerce/cart/use-remove-item'
import useCart from './use-cart'
import epClient from '../utils/ep-client'
import normalizeCart from '../utils/normalize-cart'
export default useRemoveItem as UseRemoveItem<typeof handler>
export const handler: MutationHook<any> = {
fetchOptions: {
query: '',
},
async fetcher({ input }) {
return epClient.Cart().RemoveItem(input.id);
},
useHook: ({ fetch }) => () => {
const { mutate } = useCart()
return useCallback(
async function addItem(input) {
const data = await fetch({ input })
const cartData = normalizeCart(data, await epClient.Cart().Items());
await mutate(cartData, true)
return cartData
},
[fetch, mutate]
)
},
}