From b8f5507cda2ede25ebc5433439168a8dadc71ddc Mon Sep 17 00:00:00 2001 From: "HATEC\\SPVDEV001" Date: Fri, 20 Oct 2023 10:26:15 +0700 Subject: fixing serach --- src/lib/product/components/ProductSearch.jsx | 9 +++++++-- src/lib/product/hooks/useProductSearch.js | 4 ++-- src/pages/api/shop/search.js | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/lib/product/components/ProductSearch.jsx b/src/lib/product/components/ProductSearch.jsx index bc69c9dd..af3d881f 100644 --- a/src/lib/product/components/ProductSearch.jsx +++ b/src/lib/product/components/ProductSearch.jsx @@ -26,18 +26,22 @@ const ProductSearch = ({ query, prefixUrl, defaultBrand = null }) => { const [limit, setLimit] = useState(query?.limit || 30) const [orderBy, setOrderBy] = useState(router.query?.orderBy || 'popular') if (defaultBrand) query.brand = defaultBrand.toLowerCase() - const { productSearch } = useProductSearch({ query: { ...query, q, limit, orderBy } }) + const { productSearch } = useProductSearch({ query: { ...query, q, limit, orderBy } , operation : router?.pathname?.includes('brands') ? 'OR' : 'AND' }) const [products, setProducts] = useState(null) const [spellings, setSpellings] = useState(null) const [bannerPromotionHeader, setBannerPromotionHeader] = useState(null) const [bannerPromotionFooter, setBannerPromotionFooter] = useState(null) const popup = useActive() const numRows = [30, 50, 80, 100] - const [brandValues, setBrand] = useState(query?.brand?.split(',') || []) + const [brandValues, setBrand] = useState( + !router.pathname.includes('brands') ? query.brand ? query.brand.split(',') : [] : [] + ) const [categoryValues, setCategory] = useState(query?.category?.split(',') || []) const [priceFrom, setPriceFrom] = useState(query?.priceFrom || null) const [priceTo, setPriceTo] = useState(query?.priceTo || null) + console.log('ini roiute', router.pathname.includes('brands')) + const pageCount = Math.ceil(productSearch.data?.response.numFound / limit) const productStart = productSearch.data?.responseHeader.params.start const productRows = limit @@ -466,6 +470,7 @@ const FilterChoicesComponent = ({ handleDeleteFilter('brands', value)} /> ))} + {categoryValues.map((value, index) => ( {value} diff --git a/src/lib/product/hooks/useProductSearch.js b/src/lib/product/hooks/useProductSearch.js index 4c9272f1..f3b7530a 100644 --- a/src/lib/product/hooks/useProductSearch.js +++ b/src/lib/product/hooks/useProductSearch.js @@ -2,9 +2,9 @@ import { useQuery } from 'react-query' import productSearchApi from '../api/productSearchApi' import _ from 'lodash-contrib' -const useProductSearch = ({ query }) => { +const useProductSearch = ({ query, operation }) => { const queryString = _.toQuery(query) - const fetchProductSearch = async () => await productSearchApi({ query: queryString }) + const fetchProductSearch = async () => await productSearchApi({ query: queryString , operation : operation}) const productSearch = useQuery(`productSearch-${queryString}`, fetchProductSearch) return { diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js index b4d67c5d..883bb8df 100644 --- a/src/pages/api/shop/search.js +++ b/src/pages/api/shop/search.js @@ -67,7 +67,7 @@ export default async function handler(req, res) { } if (brand) parameter.push(`fq=manufacture_name:${brand.replace(/,/g, ' OR ')}`) - if (category) parameter.push(`fq=category_name:${category}`) + if (category) parameter.push(`fq=category_name:${category.replace(/,/g, ' OR ')}`) if (stock) parameter.push(`fq=stock_total_f:{1 TO *}`) // Single fq in url params -- cgit v1.2.3