From 4c4f49c6766ad183f102deb23d4bff5d920a8a21 Mon Sep 17 00:00:00 2001 From: Chloe Date: Tue, 3 May 2022 13:49:35 +0700 Subject: [PATCH] Update add multiple variant items logic Signed-off-by: Chloe --- .../opencommerce/src/api/endpoints/cart/add-item.ts | 5 ++++- packages/opencommerce/src/types/cart.ts | 7 +++---- packages/opencommerce/src/types/product.ts | 12 +++++++++++- packages/opencommerce/src/utils/normalize.ts | 8 ++------ .../product/ProductSidebar/ProductSidebar.tsx | 6 ++---- 5 files changed, 22 insertions(+), 16 deletions(-) diff --git a/packages/opencommerce/src/api/endpoints/cart/add-item.ts b/packages/opencommerce/src/api/endpoints/cart/add-item.ts index c25cc444a..a292c35ea 100644 --- a/packages/opencommerce/src/api/endpoints/cart/add-item.ts +++ b/packages/opencommerce/src/api/endpoints/cart/add-item.ts @@ -29,7 +29,10 @@ const addItem: CartEndpoint['handlers']['addItem'] = async ({ productVariantId: item.variantId, }, quantity: item.quantity, - price: item.price, + price: { + amount: item.variant?.price, + currencyCode: item.currencyCode, + }, }, ], }, diff --git a/packages/opencommerce/src/types/cart.ts b/packages/opencommerce/src/types/cart.ts index 9a4901117..604f842f6 100644 --- a/packages/opencommerce/src/types/cart.ts +++ b/packages/opencommerce/src/types/cart.ts @@ -1,4 +1,5 @@ import * as Core from '@vercel/commerce/types/cart' +import { ProductVariant } from './product' export * from '@vercel/commerce/types/cart' @@ -8,10 +9,8 @@ export type Cart = Core.Cart & { } export type CartItemBody = Core.CartItemBody & { - price?: { - amount: number - currencyCode: string - } + currencyCode?: string + variant?: ProductVariant } export type CartTypes = Core.CartTypes & { diff --git a/packages/opencommerce/src/types/product.ts b/packages/opencommerce/src/types/product.ts index 72ca02f02..64b63fdfc 100644 --- a/packages/opencommerce/src/types/product.ts +++ b/packages/opencommerce/src/types/product.ts @@ -1 +1,11 @@ -export * from '@vercel/commerce/types/product' +import * as Core from '@vercel/commerce/types/product' + +export type Product = Core.Product + +export type ProductVariant = Core.ProductVariant & { + price?: number +} + +export type ProductOption = Core.ProductOption + +export type ProductOptionValues = Core.ProductOptionValues diff --git a/packages/opencommerce/src/utils/normalize.ts b/packages/opencommerce/src/utils/normalize.ts index fae3eac19..2b59c5485 100644 --- a/packages/opencommerce/src/utils/normalize.ts +++ b/packages/opencommerce/src/utils/normalize.ts @@ -154,16 +154,12 @@ const normalizeProductVariants = ( return productVariants } - const { sku, title, pricing = [], variantId } = variant ?? {} + const { pricing = [], variantId } = variant ?? {} const variantPrice = pricing[0]?.price ?? pricing[0]?.minPrice ?? 0 - productVariants.push({ + productVariants.push({ id: variantId ?? '', - name: title, - sku: sku ?? variantId, price: variantPrice, - listPrice: pricing[0]?.compareAtPrice?.amount ?? variantPrice, - requiresShipping: true, options: [normalizeProductOption(variant)], }) diff --git a/site/components/product/ProductSidebar/ProductSidebar.tsx b/site/components/product/ProductSidebar/ProductSidebar.tsx index 58696d6fe..17b44f49f 100644 --- a/site/components/product/ProductSidebar/ProductSidebar.tsx +++ b/site/components/product/ProductSidebar/ProductSidebar.tsx @@ -32,10 +32,8 @@ const ProductSidebar: FC = ({ product, className }) => { await addItem({ productId: String(product.id), variantId: String(variant ? variant.id : product.variants[0]?.id), - price: { - amount: product.price.value, - currencyCode: String(product.price.currencyCode), - }, + variant, + currencyCode: String(product.price.currencyCode), }) openSidebar() setLoading(false)