From c9f13989ec7b1f52a41639ed0a98e99d9d17a744 Mon Sep 17 00:00:00 2001 From: Luis Alvarez Date: Wed, 31 Mar 2021 22:53:30 -0600 Subject: [PATCH] Remove normalizers from the hooks --- framework/bigcommerce/cart/use-add-item.tsx | 7 +++---- framework/bigcommerce/cart/use-cart.tsx | 5 ----- framework/bigcommerce/cart/use-remove-item.tsx | 14 ++------------ framework/bigcommerce/cart/use-update-item.tsx | 7 ++----- framework/commerce/cart/use-cart.tsx | 2 +- framework/commerce/types/cart.ts | 6 +++--- framework/commerce/utils/default-fetcher.ts | 4 ++-- 7 files changed, 13 insertions(+), 32 deletions(-) diff --git a/framework/bigcommerce/cart/use-add-item.tsx b/framework/bigcommerce/cart/use-add-item.tsx index 3ce0ffddf..de6ee226c 100644 --- a/framework/bigcommerce/cart/use-add-item.tsx +++ b/framework/bigcommerce/cart/use-add-item.tsx @@ -2,8 +2,7 @@ import { useCallback } from 'react' import type { MutationHook } from '@commerce/utils/types' import { CommerceError } from '@commerce/utils/errors' import useAddItem, { UseAddItem } from '@commerce/cart/use-add-item' -import { normalizeCart } from '../lib/normalize' -import type { BigcommerceCart, AddItemHook, CartTypes } from '../types/cart' +import type { AddItemHook } from '../types/cart' import useCart from './use-cart' export default useAddItem as UseAddItem @@ -23,12 +22,12 @@ export const handler: MutationHook = { }) } - const data = await fetch({ + const data = await fetch({ ...options, body: { item }, }) - return normalizeCart(data) + return data }, useHook: ({ fetch }) => () => { const { mutate } = useCart() diff --git a/framework/bigcommerce/cart/use-cart.tsx b/framework/bigcommerce/cart/use-cart.tsx index 2ef5f606c..b32f2d2ec 100644 --- a/framework/bigcommerce/cart/use-cart.tsx +++ b/framework/bigcommerce/cart/use-cart.tsx @@ -1,7 +1,6 @@ import { useMemo } from 'react' import { SWRHook } from '@commerce/utils/types' import useCart, { UseCart } from '@commerce/cart/use-cart' -import { normalizeCart } from '../lib/normalize' import type { GetCartHook } from '../types/cart' export default useCart as UseCart @@ -11,10 +10,6 @@ export const handler: SWRHook = { url: '/api/bigcommerce/cart', method: 'GET', }, - async fetcher({ input: { cartId }, options, fetch }) { - const data = cartId ? await fetch(options) : null - return data && normalizeCart(data) - }, useHook: ({ useData }) => (input) => { const response = useData({ swrOptions: { revalidateOnFocus: false, ...input?.swrOptions }, diff --git a/framework/bigcommerce/cart/use-remove-item.tsx b/framework/bigcommerce/cart/use-remove-item.tsx index db6914b04..44f8cadd5 100644 --- a/framework/bigcommerce/cart/use-remove-item.tsx +++ b/framework/bigcommerce/cart/use-remove-item.tsx @@ -5,13 +5,7 @@ import type { } from '@commerce/utils/types' import { ValidationError } from '@commerce/utils/errors' import useRemoveItem, { UseRemoveItem } from '@commerce/cart/use-remove-item' -import { normalizeCart } from '../lib/normalize' -import type { - Cart, - LineItem, - RemoveItemHook, - BigcommerceCart, -} from '../types/cart' +import type { Cart, LineItem, RemoveItemHook } from '../types/cart' import useCart from './use-cart' export type RemoveItemFn = T extends LineItem @@ -34,11 +28,7 @@ export const handler = { options, fetch, }: HookFetcherContext) { - const data = await fetch({ - ...options, - body: { itemId }, - }) - return normalizeCart(data) + return await fetch({ ...options, body: { itemId } }) }, useHook: ({ fetch }: MutationHookContext) => < T extends LineItem | undefined = undefined diff --git a/framework/bigcommerce/cart/use-update-item.tsx b/framework/bigcommerce/cart/use-update-item.tsx index 55b99c5a8..6d014cc24 100644 --- a/framework/bigcommerce/cart/use-update-item.tsx +++ b/framework/bigcommerce/cart/use-update-item.tsx @@ -6,8 +6,7 @@ import type { } from '@commerce/utils/types' import { ValidationError } from '@commerce/utils/errors' import useUpdateItem, { UseUpdateItem } from '@commerce/cart/use-update-item' -import { normalizeCart } from '../lib/normalize' -import type { Cart, BigcommerceCart, LineItem, UpdateItemHook } from '../types' +import type { LineItem, UpdateItemHook } from '../types' import { handler as removeItemHandler } from './use-remove-item' import useCart from './use-cart' @@ -42,12 +41,10 @@ export const handler = { }) } - const data = await fetch({ + return await fetch({ ...options, body: { itemId, item }, }) - - return normalizeCart(data) }, useHook: ({ fetch }: MutationHookContext) => < T extends LineItem | undefined = undefined diff --git a/framework/commerce/cart/use-cart.tsx b/framework/commerce/cart/use-cart.tsx index 4950838c3..cfce59e36 100644 --- a/framework/commerce/cart/use-cart.tsx +++ b/framework/commerce/cart/use-cart.tsx @@ -13,7 +13,7 @@ export const fetcher: HookFetcherFn = async ({ input: { cartId }, fetch, }) => { - return cartId ? await fetch({ ...options }) : null + return cartId ? await fetch(options) : null } const fn = (provider: Provider) => provider.cart?.useCart! diff --git a/framework/commerce/types/cart.ts b/framework/commerce/types/cart.ts index 7a366ab1b..3c7901dbb 100644 --- a/framework/commerce/types/cart.ts +++ b/framework/commerce/types/cart.ts @@ -107,25 +107,25 @@ export type GetCartHook = { export type AddItemHook = { data: T['cart'] - body: { item: T['itemBody'] } input: T['itemBody'] fetchInput: T['itemBody'] + body: { item: T['itemBody'] } actionInput: T['itemBody'] } export type UpdateItemHook = { data: T['cart'] | null - body: { itemId: string; item: T['itemBody'] } input: { item?: T['item']; wait?: number } fetchInput: { itemId: string; item: T['itemBody'] } + body: { itemId: string; item: T['itemBody'] } actionInput: T['itemBody'] & { id: string } } export type RemoveItemHook = { data: T['cart'] | null - body: { itemId: string } input: { item?: T['item'] } fetchInput: { itemId: string } + body: { itemId: string } actionInput: { id: string } } diff --git a/framework/commerce/utils/default-fetcher.ts b/framework/commerce/utils/default-fetcher.ts index 493a9b5f9..53312fc96 100644 --- a/framework/commerce/utils/default-fetcher.ts +++ b/framework/commerce/utils/default-fetcher.ts @@ -1,9 +1,9 @@ import type { HookFetcherFn } from './types' -export const SWRFetcher: HookFetcherFn = ({ options, fetch }) => +export const SWRFetcher: HookFetcherFn = ({ options, fetch }) => fetch(options) -export const mutationFetcher: HookFetcherFn = ({ +export const mutationFetcher: HookFetcherFn = ({ input, options, fetch,