add add-item hook

This commit is contained in:
DuvCharles 2023-01-17 17:48:43 +01:00 committed by Hadrien Lucas
parent 8adaa98c8d
commit 59d191cc8c

View File

@ -1,17 +1,47 @@
import useAddItem, { UseAddItem } from '@vercel/commerce/cart/use-add-item'
import { MutationHook } from '@vercel/commerce/utils/types'
import { useCallback } from 'react'
import { getCartToken, setCartToken } from '../utils/token/cart-token'
import useCart from './use-cart'
export default useAddItem as UseAddItem<typeof handler>
export const handler: MutationHook<any> = {
fetchOptions: {
query: '',
url: '/api/v2/shop/orders',
method: 'POST',
},
fetcher: async ({ input: { productId, variantId }, options, fetch }) => {
if (!getCartToken()) {
const syliusOrder = await fetch({
url: options.url,
method: 'POST',
body: {
localeCode: 'fr_FR',
},
})
setCartToken(syliusOrder.tokenValue)
}
await fetch({
url: `${options.url}/${getCartToken()}/items`,
method: options.method,
body: {
productVariant: variantId,
quantity: 1,
},
})
},
async fetcher({ input, options, fetch }) {},
useHook:
({ fetch }) =>
() => {
return async function addItem() {
return {}
}
const { mutate } = useCart()
return useCallback(
async function addItem(input) {
const data = await fetch({ input })
await mutate(data, false)
return data
},
[fetch, mutate]
)
},
}