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 {