From f90ec98c509fad7146c169d8d762b4c847d07af8 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Fri, 15 Sep 2023 09:15:54 +0700 Subject: Add product context provider --- src/pages/_app.jsx | 5 ++++- src/pages/shop/product/[slug].jsx | 13 +++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) (limited to 'src/pages') diff --git a/src/pages/_app.jsx b/src/pages/_app.jsx index 7f23b94b..ef737794 100644 --- a/src/pages/_app.jsx +++ b/src/pages/_app.jsx @@ -10,6 +10,7 @@ import { createContext, useContext, useEffect, useState } from 'react' import LogoSpinner from '@/core/components/elements/Spinner/LogoSpinner' import { SessionProvider } from 'next-auth/react' import { getAuth } from '@/core/utils/auth' +import { ProductProvider } from '@/contexts/ProductContext' const queryClient = new QueryClient() @@ -93,7 +94,9 @@ function MyApp({ Component, pageProps: { session, ...pageProps } }) { initial={false} onExitComplete={() => window.scrollTo(0, 0)} > - {!animateLoader && } + + {!animateLoader && } + diff --git a/src/pages/shop/product/[slug].jsx b/src/pages/shop/product/[slug].jsx index af20413f..534aa8da 100644 --- a/src/pages/shop/product/[slug].jsx +++ b/src/pages/shop/product/[slug].jsx @@ -7,6 +7,8 @@ import dynamic from 'next/dynamic' import { useRouter } from 'next/router' import cookie from 'cookie' import axios from 'axios' +import { useProductContext } from '@/contexts/ProductContext' +import { useEffect } from 'react' const BasicLayout = dynamic(() => import('@/core/components/layouts/BasicLayout')) const Product = dynamic(() => import('@/lib/product/components/Product/Product')) @@ -19,7 +21,7 @@ export async function getServerSideProps(context) { const authToken = auth?.token || '' let response = await axios( - `${process.env.NEXT_PUBLIC_SELF_HOST}/api/shop/product-detail?id=`+getIdFromSlug(slug) + `${process.env.NEXT_PUBLIC_SELF_HOST}/api/shop/product-detail?id=` + getIdFromSlug(slug) ) let product = response.data // let productSolr = await productApi({ id: getIdFromSlug(slug), headers: { Token: authToken } }) @@ -41,8 +43,15 @@ export async function getServerSideProps(context) { } } -export default function ProductDetail({ product}) { +export default function ProductDetail({ product }) { const router = useRouter() + const { setProduct } = useProductContext() + + useEffect(() => { + if (product) { + setProduct(product) + } + }, [product, setProduct]) if (!product) return -- cgit v1.2.3 From 97c93a60baba9bba1af1e1774ab166ce0d98db13 Mon Sep 17 00:00:00 2001 From: "HATEC\\SPVDEV001" Date: Fri, 15 Sep 2023 15:04:16 +0700 Subject: fix bugs get variant limit --- src/pages/api/shop/product-detail.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/pages') diff --git a/src/pages/api/shop/product-detail.js b/src/pages/api/shop/product-detail.js index 9020103b..5c3a8231 100644 --- a/src/pages/api/shop/product-detail.js +++ b/src/pages/api/shop/product-detail.js @@ -7,7 +7,7 @@ export default async function handler(req, res) { ) let productVariants = await axios( process.env.SOLR_HOST + - `/solr/variants/select?q=template_id_i:${req.query.id}&q.op=OR&indent=true` + `/solr/variants/select?q=template_id_i:${req.query.id}&q.op=OR&indent=true&rows=100` ) let { auth } = req.cookies if (auth) auth = JSON.parse(auth) -- cgit v1.2.3 From 4c6ad774cbb4be9a28af066c9667bd9765826a75 Mon Sep 17 00:00:00 2001 From: "HATEC\\SPVDEV001" Date: Mon, 18 Sep 2023 11:08:27 +0700 Subject: migrasi category home page ke solr --- src/pages/api/shop/product-homepage.js | 43 ++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/pages/api/shop/product-homepage.js (limited to 'src/pages') diff --git a/src/pages/api/shop/product-homepage.js b/src/pages/api/shop/product-homepage.js new file mode 100644 index 00000000..02c01ee0 --- /dev/null +++ b/src/pages/api/shop/product-homepage.js @@ -0,0 +1,43 @@ +import axios from 'axios' +import { array } from 'yup' + +export default async function handler(req, res) { + try { + const products = [] + let GetproductHomepage = await axios( + process.env.SOLR_HOST + + `/solr/product_category_homepage/select?q=id:${req.query.id}&q.op=OR&indent=true` + ) + let productHomepage = GetproductHomepage.data.response.docs[0] + let idProducts = productHomepage.product_ids + await Promise.all( + idProducts.map(async (id) => { + let product = await axios( + `${process.env.NEXT_PUBLIC_SELF_HOST}/api/shop/product-detail?id=${id}` + ) + if (product && product.data.length > 0) { + products.push(product.data[0]) + } + }) + ) + let result = respoonseMap(productHomepage, products) + res.status(200).json(result) + } catch (error) { + console.error('Error fetching data from Solr:', error) + res.status(500).json({ error: 'Internal Server Error' }) + } +} + +const respoonseMap = (productHomepage, products) => { + let productMapped ={ + id: productHomepage.id, + sequence: productHomepage.sequence_i, + categoryId: productHomepage.category_id_i, + name: productHomepage.name_s, + image: productHomepage.image_s, + url: productHomepage.url_s, + products: products + } + + return productMapped +} -- cgit v1.2.3 From 4f285349adec93a040e41d1d8c0c1c7b57749397 Mon Sep 17 00:00:00 2001 From: "HATEC\\SPVDEV001" Date: Thu, 21 Sep 2023 14:56:35 +0700 Subject: add context for list product popup cart --- src/pages/_app.jsx | 77 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 40 insertions(+), 37 deletions(-) (limited to 'src/pages') diff --git a/src/pages/_app.jsx b/src/pages/_app.jsx index ef737794..0062f7fc 100644 --- a/src/pages/_app.jsx +++ b/src/pages/_app.jsx @@ -11,12 +11,13 @@ import LogoSpinner from '@/core/components/elements/Spinner/LogoSpinner' import { SessionProvider } from 'next-auth/react' import { getAuth } from '@/core/utils/auth' import { ProductProvider } from '@/contexts/ProductContext' +import { ProductCartProvider } from '@/contexts/ProductCartContext' const queryClient = new QueryClient() export const AuthContext = createContext({ - authenticated : false, - setAuthenticated : (auth) => {} + authenticated: false, + setAuthenticated: (auth) => {} }) function MyApp({ Component, pageProps: { session, ...pageProps } }) { @@ -63,43 +64,45 @@ function MyApp({ Component, pageProps: { session, ...pageProps } }) { return ( // - - - {animateLoader && ( - - - - )} - - - - - window.scrollTo(0, 0)} + + + {animateLoader && ( + - + + + )} + + + + + window.scrollTo(0, 0)} + > + + {!animateLoader && } - - - - + + + + + // ) } -- cgit v1.2.3