From 00fef0350a8265c9602449cef4e6fcc277d5bb52 Mon Sep 17 00:00:00 2001 From: Tiago Gimenes Date: Mon, 30 May 2022 11:05:20 -0300 Subject: [PATCH] fix validateCart logic --- packages/api/src/__generated__/schema.ts | 2 ++ .../src/platforms/vtex/resolvers/validateCart.ts | 16 ++++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/packages/api/src/__generated__/schema.ts b/packages/api/src/__generated__/schema.ts index 1fd00b4961..da3cb9d948 100644 --- a/packages/api/src/__generated__/schema.ts +++ b/packages/api/src/__generated__/schema.ts @@ -69,6 +69,8 @@ export type IStoreProduct = { export type IStorePropertyValue = { /** Property name. */ name: Scalars['String']; + /** Property id. This propert changes according to the content of the object. */ + propertyID?: Maybe; /** Property value. May hold a string or the string representation of an object. */ value: Scalars['ObjectOrString']; /** Specifies the nature of the value */ diff --git a/packages/api/src/platforms/vtex/resolvers/validateCart.ts b/packages/api/src/platforms/vtex/resolvers/validateCart.ts index d224d4158c..a37a80a86f 100644 --- a/packages/api/src/platforms/vtex/resolvers/validateCart.ts +++ b/packages/api/src/platforms/vtex/resolvers/validateCart.ts @@ -5,6 +5,7 @@ import type { IStoreCart, IStoreOffer, IStoreOrder, + IStorePropertyValue, } from '../../../__generated__/schema' import type { OrderForm, @@ -20,17 +21,18 @@ import { type Indexed = T & { index?: number } -const getAttachments = (item: IStoreOffer) => - item.itemOffered.additionalProperty?.filter( - (i) => i.valueReference === VALUE_REFERENCES.attachment - ) +const isAttachment = (value: IStorePropertyValue) => + value.valueReference === VALUE_REFERENCES.attachment const getId = (item: IStoreOffer) => [ item.itemOffered.sku, item.seller.identifier, item.price, - item.itemOffered.additionalProperty?.map(getPropertyId).join('-'), + item.itemOffered.additionalProperty + ?.filter(isAttachment) + .map(getPropertyId) + .join('-'), ] .filter(Boolean) .join('::') @@ -59,7 +61,9 @@ const offerToOrderItemInput = ( seller: offer.seller.identifier, id: offer.itemOffered.sku, index: offer.index, - attachments: (getAttachments(offer) ?? []).map((attachment) => ({ + attachments: ( + offer.itemOffered.additionalProperty?.filter(isAttachment) ?? [] + ).map((attachment) => ({ name: attachment.name, content: attachment.value, })),