From 27dd4bfb69c35256cef1607da559aa57067097b9 Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Thu, 7 Jan 2021 16:58:58 -0300 Subject: [PATCH] Moved normalizer to BC function --- .../api/operations/get-all-products.ts | 43 +++++++++++++++++-- pages/index.tsx | 42 +----------------- 2 files changed, 41 insertions(+), 44 deletions(-) diff --git a/framework/bigcommerce/api/operations/get-all-products.ts b/framework/bigcommerce/api/operations/get-all-products.ts index 0cd9737c2..036602639 100644 --- a/framework/bigcommerce/api/operations/get-all-products.ts +++ b/framework/bigcommerce/api/operations/get-all-products.ts @@ -8,6 +8,43 @@ import setProductLocaleMeta from '../utils/set-product-locale-meta' import { productConnectionFragment } from '../fragments/product' import { BigcommerceConfig, getConfig } from '..' +function productsNormalizer(arr: any[]): Product[] { + // Normalizes products arr response and flattens node edges + return arr.map( + ({ + node: { + entityId: id, + images, + variants, + productOptions, + prices, + path, + ...rest + }, + }) => ({ + id, + path, + slug: path.slice(1, -1), + images: images.edges.map( + ({ node: { urlOriginal, altText, ...rest } }: any) => ({ + url: urlOriginal, + alt: altText, + ...rest, + }) + ), + variants: variants.edges.map(({ node }: any) => node), + productOptions: productOptions.edges.map(({ node }: any) => node), + prices: [ + { + value: prices.price.value, + currencyCode: prices.price.currencyCode, + }, + ], + ...rest, + }) + ) +} + export const getAllProductsQuery = /* GraphQL */ ` query getAllProducts( $hasLocale: Boolean = false @@ -72,7 +109,7 @@ async function getAllProducts(opts?: { variables?: ProductVariables config?: BigcommerceConfig preview?: boolean -}): Promise +}): Promise<{ products: Product[] }> async function getAllProducts< T extends Record, @@ -93,7 +130,7 @@ async function getAllProducts({ variables?: ProductVariables config?: BigcommerceConfig preview?: boolean -} = {}): Promise { +} = {}): Promise<{ products: Product[] }> { config = getConfig(config) const locale = vars.locale || config.locale @@ -126,7 +163,7 @@ async function getAllProducts({ }) } - return { products } + return { products: productsNormalizer(products) } } export default getAllProducts diff --git a/pages/index.tsx b/pages/index.tsx index 186da09f6..9bb1e09a6 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -11,44 +11,6 @@ import getSiteInfo from '@framework/api/operations/get-site-info' import getAllPages from '@framework/api/operations/get-all-pages' // Outputs from providers should already be normalized -// TODO (bc) move this to the provider - -function productsNormalizer(arr: any[]) { - // Normalizes products arr response and flattens node edges - return arr.map( - ({ - node: { - entityId: id, - images, - variants, - productOptions, - prices, - path, - ...rest - }, - }) => ({ - id, - path, - slug: path.slice(1, -1), - images: images.edges.map( - ({ node: { urlOriginal, altText, ...rest } }: any) => ({ - url: urlOriginal, - alt: altText, - ...rest, - }) - ), - variants: variants.edges.map(({ node }: any) => node), - productOptions: productOptions.edges.map(({ node }: any) => node), - prices: [ - { - value: prices.price.value, - currencyCode: prices.price.currencyCode, - }, - ], - ...rest, - }) - ) -} export async function getStaticProps({ preview, @@ -56,14 +18,12 @@ export async function getStaticProps({ }: GetStaticPropsContext) { const config = getConfig({ locale }) - const { products: rawProducts } = await getAllProducts({ + const { products } = await getAllProducts({ variables: { first: 12 }, config, preview, }) - // Remove normalizer and send to framework provider. - const products = productsNormalizer(rawProducts) const { categories, brands } = await getSiteInfo({ config, preview }) const { pages } = await getAllPages({ config, preview })