diff --git a/pages/index.tsx b/pages/index.tsx index 0c1aae948..589c7ae30 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -6,15 +6,16 @@ import { GetStaticPropsContext } from 'next'; import { Layout } from 'src/components/common'; import { FeaturedProductsCarousel, FreshProducts, HomeBanner, HomeCategories, HomeCollection, HomeCTA, HomeFeature, HomeRecipe, HomeSubscribe, HomeVideo } from 'src/components/modules/home'; import HomeSpice from 'src/components/modules/home/HomeSpice/HomeSpice'; -import { getAllFeaturedFacetId, getAllFeaturedFacetValue, getFreshFacetId } from 'src/utils/funtion.utils'; +import { CODE_FACET_DISCOUNT, CODE_FACET_FEATURED } from 'src/utils/constanst.utils'; +import { getAllFacetValueIdsByParentCode, getAllFacetValuesForFeatuedProducts, getFreshFacetId } from 'src/utils/funtion.utils'; interface Props { - featuredFacetsValue: FacetValue[], + featuredAndDiscountFacetsValue: FacetValue[], freshProducts: ProductCard[], featuredProducts: ProductCard[], } -export default function Home({ featuredFacetsValue, +export default function Home({ featuredAndDiscountFacetsValue, freshProducts, featuredProducts }: Props) { return ( <> @@ -25,7 +26,7 @@ export default function Home({ featuredFacetsValue, - + @@ -48,11 +49,12 @@ export async function getStaticProps({ config, preview, }) - const featuredFacetsValue = getAllFeaturedFacetValue(facets) + const featuredAndDiscountFacetsValue = getAllFacetValuesForFeatuedProducts(facets) + + // fresh products const freshProductvariables: ProductVariables = {} const freshFacetId = getFreshFacetId(facets) - if (freshFacetId) { freshProductvariables.facetValueIds = [freshFacetId] } @@ -62,15 +64,19 @@ export async function getStaticProps({ preview, }) - const allFeaturedFacetId = getAllFeaturedFacetId(facets) + // featured products + const allFeaturedFacetIds = getAllFacetValueIdsByParentCode(facets, CODE_FACET_FEATURED) + const allDiscountFacetIds = getAllFacetValueIdsByParentCode(facets, CODE_FACET_DISCOUNT) + const facetValueIdsForFeaturedProducts = [...allFeaturedFacetIds, ...allDiscountFacetIds] const featuredProductsPromise = commerce.getAllProducts({ variables: { - facetValueIds: allFeaturedFacetId + facetValueIds: facetValueIdsForFeaturedProducts }, config, preview, }) + try { const rs = await Promise.all([ freshProductsPromise, @@ -79,10 +85,9 @@ export async function getStaticProps({ return { props: { - facets, - featuredFacetsValue, + featuredAndDiscountFacetsValue, freshProducts: freshFacetId ? rs[0].products : [], - featuredProducts: rs[1].products + featuredProducts: facetValueIdsForFeaturedProducts.length > 0 ? rs[1].products : [] }, revalidate: 60, } diff --git a/src/utils/constanst.utils.ts b/src/utils/constanst.utils.ts index bc4c00287..1db198178 100644 --- a/src/utils/constanst.utils.ts +++ b/src/utils/constanst.utils.ts @@ -112,9 +112,9 @@ export const BRAND = [ ] export const CODE_FACET_FEATURED = 'featured' +export const CODE_FACET_DISCOUNT = 'discount' export const CODE_FACET_FEATURED_VARIANT = { FRESH: 'fresh', - BEST_SELLERS: 'best-sellers' } export const FEATURED = [ diff --git a/src/utils/funtion.utils.ts b/src/utils/funtion.utils.ts index e16a250b7..d486ca4d0 100644 --- a/src/utils/funtion.utils.ts +++ b/src/utils/funtion.utils.ts @@ -1,6 +1,6 @@ import { Facet } from "@commerce/types/facet"; import { FacetValue } from './../../framework/vendure/schema.d'; -import { CODE_FACET_FEATURED, CODE_FACET_FEATURED_VARIANT } from "./constanst.utils"; +import { CODE_FACET_DISCOUNT, CODE_FACET_FEATURED, CODE_FACET_FEATURED_VARIANT } from "./constanst.utils"; export function isMobile() { return window.innerWidth < 768 @@ -30,16 +30,21 @@ export function getFreshFacetId(facets: Facet[]) { return freshFacetValue?.id } -export function getAllFeaturedFacetId(facets: Facet[]) { - const featuredFacet = facets.find((item: Facet) => item.code === CODE_FACET_FEATURED) +export function getAllFacetValueIdsByParentCode(facets: Facet[], code: string) { + const featuredFacet = facets.find((item: Facet) => item.code === code) const rs = featuredFacet?.values.map((item: FacetValue) => item.id) - return rs + return rs || [] } -export function getAllFeaturedFacetValue(facets: Facet[]) { - const featuredFacet = facets.find((item: Facet) => item.code === CODE_FACET_FEATURED) - return featuredFacet?.values +export function getAllFacetValuesForFeatuedProducts(facets: Facet[]) { + const facetsRs = facets.filter((item: Facet) => item.code === CODE_FACET_FEATURED || item.code === CODE_FACET_DISCOUNT) + let rs = [] as FacetValue[] + facetsRs.map((item: Facet) => { + rs = rs.concat(item.values) + return null + }) + return rs } export function getFacetNamesFromIds(facets: FacetValue[], ids?: string[]): string {