From 289c2948d6fb104bd6793eafbd92d7d9bb387aba Mon Sep 17 00:00:00 2001 From: Luis Alvarez Date: Mon, 5 Oct 2020 12:35:55 -0500 Subject: [PATCH] Added remove item from cart hook --- lib/bigcommerce/cart/use-remove-item.tsx | 26 ++++++++++++++++++++++++ lib/commerce/cart/use-remove-item.tsx | 11 ++++++++++ 2 files changed, 37 insertions(+) create mode 100644 lib/bigcommerce/cart/use-remove-item.tsx create mode 100644 lib/commerce/cart/use-remove-item.tsx diff --git a/lib/bigcommerce/cart/use-remove-item.tsx b/lib/bigcommerce/cart/use-remove-item.tsx new file mode 100644 index 000000000..6cae549f3 --- /dev/null +++ b/lib/bigcommerce/cart/use-remove-item.tsx @@ -0,0 +1,26 @@ +import type { Fetcher } from '@lib/commerce' +import { default as useCartRemoveItem } from '@lib/commerce/cart/use-remove-item' +import type { ItemBody, RemoveItemBody } from '../api/cart' +import { Cart, useCart } from '.' + +export type { ItemBody, RemoveItemBody } + +function fetcher(fetch: Fetcher, { itemId }: RemoveItemBody) { + return fetch({ + url: '/api/bigcommerce/cart', + method: 'POST', + body: { itemId }, + }) +} + +export default function useRemoveItem() { + const { mutate } = useCart() + const fn = useCartRemoveItem(fetcher) + const removeItem: typeof fn = async (input) => { + const data = await fn(input) + mutate(data) + return data + } + + return removeItem +} diff --git a/lib/commerce/cart/use-remove-item.tsx b/lib/commerce/cart/use-remove-item.tsx new file mode 100644 index 000000000..e7c529388 --- /dev/null +++ b/lib/commerce/cart/use-remove-item.tsx @@ -0,0 +1,11 @@ +import { Fetcher, useCommerce } from '..' + +export default function useRemoveItem( + fetcher: (fetch: Fetcher, input: Input) => T | Promise +) { + const { fetcher: fetch } = useCommerce() + + return async function removeItem(input: Input) { + return fetcher(fetch, input) + } +}