diff --git a/framework/vendure/api/operations/get-all-products.ts b/framework/vendure/api/operations/get-all-products.ts
index 1f558a7cb..c9cbc2f19 100644
--- a/framework/vendure/api/operations/get-all-products.ts
+++ b/framework/vendure/api/operations/get-all-products.ts
@@ -5,7 +5,7 @@ import { normalizeSearchResult } from '../../utils/normalize'
import { getAllProductsQuery } from '../../utils/queries/get-all-products-query'
import { OperationContext } from '@commerce/api/operations'
-export type ProductVariables = { first?: number, facetValueIds?: string[] }
+export type ProductVariables = { first?: number, facetValueIds?: string[], collectionSlug?:string }
export default function getAllProductsOperation({
commerce,
@@ -31,6 +31,7 @@ export default function getAllProductsOperation({
input: {
take: vars.first,
facetValueIds: vars.facetValueIds,
+ collectionSlug : vars.collectionSlug,
groupByProduct: true,
},
}
diff --git a/pages/index.tsx b/pages/index.tsx
index 3082d1790..55b5dd5a5 100644
--- a/pages/index.tsx
+++ b/pages/index.tsx
@@ -1,20 +1,21 @@
import { ProductVariables } from '@framework/api/operations/get-all-products';
-import { Product } from '@framework/schema';
+import { Facet, Product } from '@framework/schema';
import commerce from '@lib/api/commerce';
+import { ifError } from 'assert';
import { GetStaticPropsContext } from 'next';
import { Layout } from 'src/components/common';
import { FeaturedProductsCarousel, HomeBanner, HomeCategories, HomeCollection, HomeCTA, HomeFeature, HomeRecipe, HomeSubscribe, HomeVideo } from 'src/components/modules/home';
import HomeSpice from 'src/components/modules/home/HomeSpice/HomeSpice';
-import { getAllFeaturedFacetId, getFreshProductFacetId } from 'src/utils/funtion.utils';
+import { FACET } from 'src/utils/constanst.utils';
+import { getAllFeaturedFacetId, getFacetIdByName, getFreshProductFacetId } from 'src/utils/funtion.utils';
interface Props {
- freshProducts: Product[],
- featuredProducts: Product[],
-
+ veggie: Product[],
+ facets:Facet[]
}
-export default function Home({ freshProducts, featuredProducts }: Props) {
- console.log("total: ", freshProducts.length, featuredProducts.length)
- console.log("rs: ", freshProducts, featuredProducts)
+export default function Home({ veggie, facets }: Props) {
+ // console.log("total: ", freshProducts.length, featuredProducts.length)
+ console.log("rs: ", veggie)
return (
<>
@@ -46,37 +47,43 @@ export async function getStaticProps({
config,
preview,
})
-
-
+
const freshProductvariables: ProductVariables = {}
- const freshFacetId = getFreshProductFacetId(facets)
-
- if (freshFacetId) {
- freshProductvariables.facetValueIds = [freshFacetId]
+ // const freshFacetId = getFreshProductFacetId(facets)
+ const veggieId = getFacetIdByName(facets,FACET.CATEGORY.PARENT_NAME,FACET.CATEGORY.VEGGIE)
+ console.log("veggieId",veggieId)
+ console.log("facets",facets)
+ if (veggieId) {
+ freshProductvariables.facetValueIds = [veggieId]
}
+ // if (freshFacetId) {
+ // freshProductvariables.facetValueIds = [freshFacetId]
+ // }
const freshProductsPromise = commerce.getAllProducts({
variables: freshProductvariables,
config,
preview,
})
- const allFeaturedFacetId = getAllFeaturedFacetId(facets)
- const featuredProductsPromise = commerce.getAllProducts({
- variables: {
- facetValueIds: allFeaturedFacetId
- },
- config,
- preview,
- })
+ // const allFeaturedFacetId = getAllFeaturedFacetId(facets)
+ // const featuredProductsPromise = commerce.getAllProducts({
+ // variables: {
+ // facetValueIds: allFeaturedFacetId
+ // },
+ // config,
+ // preview,
+ // })
try {
- const rs = await Promise.all([freshProductsPromise, featuredProductsPromise])
+ const rs = await Promise.all([freshProductsPromise])
+ // const rs = await Promise.all([freshProductsPromise, featuredProductsPromise])
return {
props: {
- freshProducts: rs[0].products,
- featuredProducts: rs[1].products
+ veggie: rs[0].products,
+ // featuredProducts: rs[1].products
+ facets
},
revalidate: 60,
}
diff --git a/src/components/common/CartDrawer/CartDrawer.tsx b/src/components/common/CartDrawer/CartDrawer.tsx
index 87d357b2a..daeae0513 100644
--- a/src/components/common/CartDrawer/CartDrawer.tsx
+++ b/src/components/common/CartDrawer/CartDrawer.tsx
@@ -1,6 +1,6 @@
import React from 'react';
import { useCartDrawer } from 'src/components/contexts';
-import useGetActiveOrder from 'src/components/hooks/useGetActiveOrder';
+import useGetActiveOrder from 'src/components/hooks/cart/useGetActiveOrder';
import { PRODUCT_CART_DATA_TEST } from 'src/utils/demo-data';
import { DrawerCommon } from '..';
import s from './CartDrawer.module.scss';
diff --git a/src/components/hooks/cart/index.ts b/src/components/hooks/cart/index.ts
new file mode 100644
index 000000000..c0235c81c
--- /dev/null
+++ b/src/components/hooks/cart/index.ts
@@ -0,0 +1,2 @@
+export { default as useAddProductToCart } from './useAddProductToCart'
+export { default as useGetActiveOrder } from './useGetActiveOrder'
\ No newline at end of file
diff --git a/src/components/hooks/cart/useAddProductToCart.tsx b/src/components/hooks/cart/useAddProductToCart.tsx
new file mode 100644
index 000000000..2e6c538e2
--- /dev/null
+++ b/src/components/hooks/cart/useAddProductToCart.tsx
@@ -0,0 +1,40 @@
+import { useState } from 'react'
+import { CommonError } from 'src/domains/interfaces/CommonError'
+import rawFetcher from 'src/utils/rawFetcher'
+import { AddItemToOrderMutation, AddItemToOrderMutationVariables } from '@framework/schema'
+import { errorMapping } from 'src/utils/errrorMapping'
+import { useGetActiveOrder } from '.'
+import { addItemToOrderMutation } from '@framework/utils/mutations/add-item-to-order-mutation'
+
+const useAddProductToCart = () => {
+ const [loading, setLoading] = useState(false)
+ const [error, setError] = useState(null)
+ const { mutate } = useGetActiveOrder()
+
+ const addProduct = (options:AddItemToOrderMutationVariables,
+ fCallBack: (isSuccess: boolean, message?: string) => void
+ ) => {
+ setError(null)
+ setLoading(true)
+ rawFetcher({
+ query: addItemToOrderMutation ,
+ variables: options,
+ })
+ .then(({ data }) => {
+ if (data.addItemToOrder.__typename !== "Order") {
+ throw CommonError.create(errorMapping(data.addItemToOrder.message), data.addItemToOrder.errorCode)
+ }
+ mutate()
+ fCallBack(true)
+ })
+ .catch((error) => {
+ setError(error)
+ fCallBack(false, error.message)
+ })
+ .finally(() => setLoading(false))
+ }
+
+ return { loading, addProduct, error }
+}
+
+export default useAddProductToCart
diff --git a/src/components/hooks/useGetActiveOrder.tsx b/src/components/hooks/cart/useGetActiveOrder.tsx
similarity index 100%
rename from src/components/hooks/useGetActiveOrder.tsx
rename to src/components/hooks/cart/useGetActiveOrder.tsx
diff --git a/src/utils/constanst.utils.ts b/src/utils/constanst.utils.ts
index f66d6a7ea..2d85951a7 100644
--- a/src/utils/constanst.utils.ts
+++ b/src/utils/constanst.utils.ts
@@ -1,3 +1,5 @@
+import { FacetConstant } from "./types.utils"
+
export const BLUR_DATA_IMG = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mN8fBIAApUBruKYvzsAAAAASUVORK5CYII='
export const SOCIAL_LINKS = {
@@ -113,6 +115,10 @@ export const FACET = {
PARENT_NAME: 'Featured',
FRESH: 'Fresh',
BEST_SELLERS: 'Best seller'
+ },
+ CATEGORY: {
+ PARENT_NAME:"category",
+ VEGGIE:"veggie"
}
}
diff --git a/src/utils/funtion.utils.ts b/src/utils/funtion.utils.ts
index d2ad83be1..4c0265a19 100644
--- a/src/utils/funtion.utils.ts
+++ b/src/utils/funtion.utils.ts
@@ -21,6 +21,13 @@ export function getFreshProductFacetId(facets: Facet[]) {
return freshFacetValue?.id
}
+export function getFacetIdByName(facets: Facet[], facetName: string, valueName:string) {
+ const featuredFacet = facets.find((item: Facet) => item.name === facetName)
+ const freshFacetValue = featuredFacet?.values.find((item: FacetValue) => item.name === valueName)
+ return freshFacetValue?.id
+}
+
+
export function getAllFeaturedFacetId(facets: Facet[]) {
const featuredFacet = facets.find((item: Facet) => item.name === FACET.FEATURE.PARENT_NAME)
const rs = featuredFacet?.values.map((item: FacetValue) => item.id)
diff --git a/src/utils/types.utils.ts b/src/utils/types.utils.ts
index fe1a4df07..7936675e8 100644
--- a/src/utils/types.utils.ts
+++ b/src/utils/types.utils.ts
@@ -52,4 +52,13 @@ export type filterContextType = {
visible: boolean;
open: () => void;
close: () => void;
-};
\ No newline at end of file
+};
+
+export interface StringMap { [key: string]: string; }
+
+export interface FacetMap extends StringMap{
+ PARENT_NAME: string
+}
+export interface FacetConstant{
+ [key: string]: FacetMap;
+}
\ No newline at end of file