summaryrefslogtreecommitdiff
path: root/src/pages
diff options
context:
space:
mode:
Diffstat (limited to 'src/pages')
-rw-r--r--src/pages/_app.jsx41
-rw-r--r--src/pages/api/shop/brands.js44
-rw-r--r--src/pages/api/shop/search.js17
-rw-r--r--src/pages/index.jsx5
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}>