From 39ba0ab33d6ea3bb91ac782fc62ff558aacf9593 Mon Sep 17 00:00:00 2001 From: Catalin Pinte <1243434+cond0r@users.noreply.github.com> Date: Tue, 15 Nov 2022 17:27:20 +0200 Subject: [PATCH] Update cart normalizer --- packages/commercejs/src/cart/use-add-item.tsx | 4 ++-- packages/commercejs/src/cart/use-remove-item.tsx | 2 +- packages/commercejs/src/cart/use-update-item.tsx | 6 +++--- packages/commercejs/src/utils/normalize-cart.ts | 6 ++++-- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/commercejs/src/cart/use-add-item.tsx b/packages/commercejs/src/cart/use-add-item.tsx index b8fb8cb1c..0ad21bdc9 100644 --- a/packages/commercejs/src/cart/use-add-item.tsx +++ b/packages/commercejs/src/cart/use-add-item.tsx @@ -22,17 +22,17 @@ export const handler: MutationHook = { variables.push(item.variantId) } - const { cart } = await fetch<{ cart: CommercejsCart }>({ + const cart = await fetch({ query: options.query, method: options.method, variables, }) + return normalizeCart(cart) }, useHook: ({ fetch }) => function useHook() { const { mutate } = useCart() - return useCallback( async function addItem(input) { const cart = await fetch({ input }) diff --git a/packages/commercejs/src/cart/use-remove-item.tsx b/packages/commercejs/src/cart/use-remove-item.tsx index c06ac6d78..4923be5ab 100644 --- a/packages/commercejs/src/cart/use-remove-item.tsx +++ b/packages/commercejs/src/cart/use-remove-item.tsx @@ -16,7 +16,7 @@ export const handler: MutationHook = { method: 'remove', }, async fetcher({ input, options, fetch }) { - const { cart } = await fetch<{ cart: CommercejsCart }>({ + const cart = await fetch({ query: options.query, method: options.method, variables: input.itemId, diff --git a/packages/commercejs/src/cart/use-update-item.tsx b/packages/commercejs/src/cart/use-update-item.tsx index d9c38c60b..83faac35d 100644 --- a/packages/commercejs/src/cart/use-update-item.tsx +++ b/packages/commercejs/src/cart/use-update-item.tsx @@ -30,7 +30,7 @@ export const handler = { }, async fetcher({ input, options, fetch }: HookFetcherContext) { const variables = [input.itemId, { quantity: input.item.quantity }] - const { cart } = await fetch<{ cart: CommercejsCart }>({ + const cart = await fetch({ query: options.query, method: options.method, variables, @@ -57,7 +57,7 @@ export const handler = { const variantId = input.productId ?? item?.variantId const quantity = input?.quantity ?? item?.quantity - if (!itemId || !productId || !variantId) { + if (!itemId || !productId) { throw new ValidationError({ message: 'Invalid input for updating cart item', }) @@ -69,7 +69,7 @@ export const handler = { item: { quantity, productId, - variantId, + variantId: variantId ?? '', }, }, }) diff --git a/packages/commercejs/src/utils/normalize-cart.ts b/packages/commercejs/src/utils/normalize-cart.ts index 6bb7334be..909fa8335 100644 --- a/packages/commercejs/src/utils/normalize-cart.ts +++ b/packages/commercejs/src/utils/normalize-cart.ts @@ -44,14 +44,16 @@ const normalizeLineItem = ( } } -export const normalizeCart = (commercejsCart: CommercejsCart): Cart => { +export const normalizeCart = ( + commercejsCart: CommercejsCart | { cart: CommercejsCart } +): Cart => { const { id, created, subtotal: { raw: rawPrice }, currency, line_items, - } = commercejsCart + } = 'cart' in commercejsCart ? commercejsCart.cart : commercejsCart return { id,