diff options
Diffstat (limited to 'src/pages')
| -rw-r--r-- | src/pages/_app.jsx | 41 | ||||
| -rw-r--r-- | src/pages/api/shop/brands.js | 44 | ||||
| -rw-r--r-- | src/pages/api/shop/search.js | 17 | ||||
| -rw-r--r-- | src/pages/index.jsx | 5 |
4 files changed, 72 insertions, 35 deletions
diff --git a/src/pages/_app.jsx b/src/pages/_app.jsx index 0062f7fc..afebc293 100644 --- a/src/pages/_app.jsx +++ b/src/pages/_app.jsx @@ -1,36 +1,27 @@ import '../styles/globals.css' import 'react-loading-skeleton/dist/skeleton.css' + import NextProgress from 'next-progress' import { useRouter, Router } from 'next/router' import { AnimatePresence, motion } from 'framer-motion' import { Toaster } from 'react-hot-toast' import { QueryClient, QueryClientProvider } from 'react-query' import useDevice from '@/core/hooks/useDevice' -import { createContext, useContext, useEffect, useState } from 'react' +import { 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' import { ProductCartProvider } from '@/contexts/ProductCartContext' +import { ChakraProvider } from '@chakra-ui/react' +import theme from '../../chakra.theme' const queryClient = new QueryClient() -export const AuthContext = createContext({ - authenticated: false, - setAuthenticated: (auth) => {} -}) - function MyApp({ Component, pageProps: { session, ...pageProps } }) { const router = useRouter() const { isMobile } = useDevice() const [animateLoader, setAnimateLoader] = useState(false) - const [authenticated, setAuthenticated] = useState(null) - const auth = getAuth() - - // useEffect(() => { - // setAuthenticated(auth) - // }, [auth]) useEffect(() => { const handleRouteChangeStart = () => setAnimateLoader(true) @@ -63,14 +54,13 @@ function MyApp({ Component, pageProps: { session, ...pageProps } }) { }, [isMobile]) return ( - // <AuthContext.Provider value={{authenticated, setAuthenticated}}> <SessionProvider session={session}> <AnimatePresence> {animateLoader && ( <motion.div - initial={{ opacity: 0 }} + initial={{ opacity: 0.4 }} animate={{ opacity: 1 }} - exit={{ opacity: 0 }} + exit={{ opacity: 0.4 }} transition={{ duration: 0.1 }} @@ -90,20 +80,15 @@ function MyApp({ Component, pageProps: { session, ...pageProps } }) { /> <NextProgress color='#F01C21' options={{ showSpinner: false }} /> <QueryClientProvider client={queryClient}> - <AnimatePresence - mode='popLayout' - initial={false} - onExitComplete={() => window.scrollTo(0, 0)} - > - <ProductProvider> - <ProductCartProvider> - {!animateLoader && <Component {...pageProps} key={router.asPath} />} - </ProductCartProvider> - </ProductProvider> - </AnimatePresence> + <ProductProvider> + <ProductCartProvider> + <ChakraProvider theme={theme}> + <Component {...pageProps} key={router.asPath} /> + </ChakraProvider> + </ProductCartProvider> + </ProductProvider> </QueryClientProvider> </SessionProvider> - // </AuthContext.Provider> ) } diff --git a/src/pages/api/shop/brands.js b/src/pages/api/shop/brands.js new file mode 100644 index 00000000..e93fe2c9 --- /dev/null +++ b/src/pages/api/shop/brands.js @@ -0,0 +1,44 @@ +import axios from 'axios' + +export default async function handler(req, res) { + try { + let params = '*:*' + let sort = 'sort=if(exists(sequence_i),0,1) asc,sequence_i asc, if(exists(image_s),0,1) asc ' + let rows = 2000 + + if (req.query.params) { + rows = 100 + switch (req?.query?.params) { + case 'level_s': + params = 'level_s:prioritas' + break + default: + params = `name_s:${req.query.params}` + } + } + let brands = await axios( + process.env.SOLR_HOST + + `/solr/brands/select?q=${params}&q.op=OR&indent=true&rows=${rows}&${sort}` + ) + + let dataBrands = responseMap(brands.data.response.docs) + + res.status(200).json(dataBrands) + } catch (error) { + console.error('Error fetching data from Solr:', error) + res.status(500).json({ error: 'Internal Server Error' }) + } +} + +const responseMap = (brands) => { + return brands.map((brand) => { + let brandMapping = { + id: brand.id, + name: brand.display_name_s, + logo: brand.image_s || '', + sequance: brand.sequence_i || '' + } + + return brandMapping + }) +} diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js index d465d94b..7b44ef37 100644 --- a/src/pages/api/shop/search.js +++ b/src/pages/api/shop/search.js @@ -49,7 +49,8 @@ export default async function handler(req, res) { 'qf=name_s', `start=${offset}`, `rows=${limit}`, - `sort=${paramOrderBy}` + `sort=${paramOrderBy}`, + `fq=-publish_b:false` ] if (priceFrom > 0 || priceTo > 0) { @@ -103,17 +104,19 @@ const escapeSolrQuery = (query) => { const productResponseMap = (products, pricelist) => { return products.map((product) => { - let price = product.price_f || 0 + let price = product.price_tier1_v2_f || 0 let priceDiscount = product.price_discount_f || 0 let discountPercentage = product.discount_f || 0 if (pricelist) { - const pricelistDiscount = product?.[`price_${pricelist}_f`] || false - const pricelistDiscountPerc = product?.[`discount_${pricelist}_f`] || false + // const pricelistDiscount = product?.[`price_${pricelist}_f`] || false + // const pricelistDiscountPerc = product?.[`discount_${pricelist}_f`] || false - if (pricelistDiscount && pricelistDiscount > 0) priceDiscount = pricelistDiscount - if (pricelistDiscountPerc && pricelistDiscountPerc > 0) - discountPercentage = pricelistDiscountPerc + // if (pricelistDiscount && pricelistDiscount > 0) priceDiscount = pricelistDiscount + // if (pricelistDiscountPerc && pricelistDiscountPerc > 0) + // discountPercentage = pricelistDiscountPerc + + price = product?.[`price_${pricelist}_v2_f`] || 0 } if (product?.flashsale_id_i > 0) { diff --git a/src/pages/index.jsx b/src/pages/index.jsx index 47a0a493..64f3ac10 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -31,6 +31,7 @@ const FlashSale = dynamic(() => import('@/lib/flashSale/components/FlashSale'), const BannerSection = dynamic(() => import('@/lib/home/components/BannerSection')) const CategoryHomeId = dynamic(() => import('@/lib/home/components/CategoryHomeId')) const CustomerReviews = dynamic(() => import('@/lib/review/components/CustomerReviews')) +const ServiceList = dynamic(() => import('@/lib/home/components/ServiceList')) export default function Home() { const bannerRef = useRef(null) @@ -72,6 +73,7 @@ export default function Home() { </div> <div className='my-16 flex flex-col gap-y-16'> + <ServiceList /> <PreferredBrand /> <FlashSale /> <PromotinProgram /> @@ -88,6 +90,9 @@ export default function Home() { </DelayRender> <div className='flex flex-col gap-y-12 my-6'> <DelayRender renderAfter={400}> + <ServiceList /> + </DelayRender> + <DelayRender renderAfter={400}> <PreferredBrand /> </DelayRender> <DelayRender renderAfter={600}> |
