From 9c2c365da1edb2e2835d19303cdee81e53f3deb8 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Mon, 10 Apr 2023 14:43:30 +0700 Subject: fix reset password, register, search, suggest --- src/pages/api/shop/search.js | 30 ++++++++++++++++++++---------- src/pages/api/shop/suggest.js | 2 +- src/pages/reset-password.jsx | 7 +++++-- 3 files changed, 26 insertions(+), 13 deletions(-) (limited to 'src/pages') diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js index ef070dcd..bab96237 100644 --- a/src/pages/api/shop/search.js +++ b/src/pages/api/shop/search.js @@ -15,19 +15,19 @@ export default async function handler(req, res) { limit = 30 } = req.query - let paramOrderBy = '' + let paramOrderBy = 'product_rating_f DESC' switch (orderBy) { case 'price-asc': - paramOrderBy = ', price_discount_f ASC' + paramOrderBy += ', price_discount_f ASC' break case 'price-desc': - paramOrderBy = ', price_discount_f DESC' + paramOrderBy += ', price_discount_f DESC' break case 'popular': - paramOrderBy = ', search_rank_i DESC' + paramOrderBy += ', search_rank_i DESC' break case 'stock': - paramOrderBy = ', stock_total_f DESC' + paramOrderBy += ', stock_total_f DESC' break } @@ -37,12 +37,13 @@ export default async function handler(req, res) { 'facet.field=category_name', 'facet=true', 'indent=true', - `facet.query=${q}`, + `facet.query=${escapeSolrQuery(q)}`, `q.op=${operation}`, `q=${escapeSolrQuery(q)}`, + 'qf=name_s', `start=${offset}`, `rows=${limit}`, - `sort=product_rating_f DESC ${paramOrderBy}`, + `sort=${paramOrderBy}`, `fq=price_discount_f:[${priceFrom == '' ? '*' : priceFrom} TO ${priceTo == '' ? '*' : priceTo}]` ] @@ -68,9 +69,18 @@ export default async function handler(req, res) { } const escapeSolrQuery = (query) => { - const specialChars = /[\]\[{}()"\\]/g - const escapedQuery = query.replace(specialChars, '\\$&') - return escapedQuery + if (query == '*') return query + + const specialChars = /([\+\-\!\(\)\{\}\[\]\^"~\*\?:\\\/])/g + const words = query.split(/\s+/) + const escapedWords = words.map((word) => { + if (specialChars.test(word)) { + return `"${word.replace(specialChars, '\\$1')}"` + } + return word + }) + + return escapedWords.join(' ') } const productResponseMap = (products) => { diff --git a/src/pages/api/shop/suggest.js b/src/pages/api/shop/suggest.js index 5a1b559a..83ab69d4 100644 --- a/src/pages/api/shop/suggest.js +++ b/src/pages/api/shop/suggest.js @@ -5,7 +5,7 @@ export default async function handler(req, res) { let result = await axios( process.env.SOLR_HOST + - `/solr/product/suggest?suggest=true&suggest.dictionary=mySuggester&suggest.q=${q}` + `/solr/product/suggest?suggest=true&suggest.dictionary=mySuggester&q=${q}` ) try { res.status(200).json(result.data.suggest.mySuggester[q]) diff --git a/src/pages/reset-password.jsx b/src/pages/reset-password.jsx index a4aa2201..0bf6f31e 100644 --- a/src/pages/reset-password.jsx +++ b/src/pages/reset-password.jsx @@ -46,7 +46,7 @@ const FormComponent = () => { const checkValidPassword = () => { const passwordVal = password.current.value const retypePasswordVal = retypePassword.current.value - if (passwordVal == retypePasswordVal) { + if (passwordVal && passwordVal == retypePasswordVal) { setIsValidPassword(true) } else { setIsValidPassword(false) @@ -56,7 +56,10 @@ const FormComponent = () => { const resetPasswordRequest = async (e) => { e.preventDefault() setIsLoading(true) - const result = await odooApi('POST', '/api/v1/user/reset-password', { token }) + const result = await odooApi('POST', '/api/v1/user/reset-password', { + token, + password: password.current.value + }) setIsLoading(false) password.current.value = '' retypePassword.current.value = '' -- cgit v1.2.3 From 8dea9e9242aca8bf003a7c2f69c96abafbf77e6d Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Mon, 10 Apr 2023 16:29:48 +0700 Subject: page loader --- src/pages/_app.jsx | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) (limited to 'src/pages') diff --git a/src/pages/_app.jsx b/src/pages/_app.jsx index 634e631f..6906cb92 100644 --- a/src/pages/_app.jsx +++ b/src/pages/_app.jsx @@ -1,11 +1,13 @@ import '../styles/globals.css' import NextProgress from 'next-progress' -import { useRouter } from 'next/router' +import { useRouter, Router } from 'next/router' import { AnimatePresence } from 'framer-motion' import { Toaster } from 'react-hot-toast' import { QueryClient, QueryClientProvider } from 'react-query' import useDevice from '@/core/hooks/useDevice' import { useEffect, useState } from 'react' +import Image from 'next/image' +import IndoteknikLogo from '@/images/LOGO-INDOTEKNIK-GEAR.png' const queryClient = new QueryClient() @@ -13,6 +15,18 @@ function MyApp({ Component, pageProps }) { const router = useRouter() const { isMobile } = useDevice() + const [animateLoader, setAnimateLoader] = useState(false) + + useEffect(() => { + Router.events.on('routeChangeStart', () => setAnimateLoader(true)) + Router.events.on('routeChangeComplete', () => setAnimateLoader(false)) + + return () => { + Router.events.off('routeChangeStart', () => setAnimateLoader(true)) + Router.events.off('routeChangeComplete', () => setAnimateLoader(false)) + } + }, []) + const [toasterStyle, setToasterStyle] = useState({}) useEffect(() => { @@ -30,6 +44,17 @@ function MyApp({ Component, pageProps }) { return ( <> + {animateLoader && ( +
+ Indoteknik Logo +
+ )} window.scrollTo(0, 0)} > - + {!animateLoader && } -- cgit v1.2.3 From 62bebc1d33fd090d7666e18e7a0326ef7ef36897 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Mon, 10 Apr 2023 16:49:16 +0700 Subject: fix --- src/pages/_app.jsx | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) (limited to 'src/pages') diff --git a/src/pages/_app.jsx b/src/pages/_app.jsx index 6906cb92..3c93d27f 100644 --- a/src/pages/_app.jsx +++ b/src/pages/_app.jsx @@ -6,8 +6,7 @@ import { Toaster } from 'react-hot-toast' import { QueryClient, QueryClientProvider } from 'react-query' import useDevice from '@/core/hooks/useDevice' import { useEffect, useState } from 'react' -import Image from 'next/image' -import IndoteknikLogo from '@/images/LOGO-INDOTEKNIK-GEAR.png' +import LogoSpinner from '@/core/components/elements/Spinner/LogoSpinner' const queryClient = new QueryClient() @@ -46,13 +45,7 @@ function MyApp({ Component, pageProps }) { <> {animateLoader && (
- Indoteknik Logo +
)} Date: Tue, 11 Apr 2023 09:47:25 +0700 Subject: Documentation and refactor code --- src/pages/forgot-password.jsx | 6 +++- src/pages/my/menu.jsx | 20 +++--------- src/pages/shop/brands/[slug].jsx | 5 ++- src/pages/shop/checkout/[status].jsx | 2 +- src/pages/shop/quotation/finish.jsx | 58 +++++++++++++++++----------------- src/pages/shop/search.jsx | 7 +--- src/pages/sitemap/products/[id].xml.js | 2 +- 7 files changed, 43 insertions(+), 57 deletions(-) (limited to 'src/pages') diff --git a/src/pages/forgot-password.jsx b/src/pages/forgot-password.jsx index 6211d237..23239363 100644 --- a/src/pages/forgot-password.jsx +++ b/src/pages/forgot-password.jsx @@ -91,7 +91,11 @@ const FormComponent = () => { placeholder='Masukan alamat email' autoFocus /> - diff --git a/src/pages/my/menu.jsx b/src/pages/my/menu.jsx index 851bcf56..e7ae27fd 100644 --- a/src/pages/my/menu.jsx +++ b/src/pages/my/menu.jsx @@ -19,10 +19,7 @@ export default function Menu() { return ( - +
@@ -64,10 +61,7 @@ export default function Menu() { Daftar Alamat -
+
@@ -78,19 +72,13 @@ export default function Menu() { } const MenuHeader = ({ children, ...props }) => ( -
+
{children}
) const LinkItem = ({ children, ...props }) => ( - + {children}
diff --git a/src/pages/shop/brands/[slug].jsx b/src/pages/shop/brands/[slug].jsx index 9c5193ad..88f19bc0 100644 --- a/src/pages/shop/brands/[slug].jsx +++ b/src/pages/shop/brands/[slug].jsx @@ -11,7 +11,7 @@ const Brand = dynamic(() => import('@/lib/brand/components/Brand')) export default function BrandDetail() { const router = useRouter() const { slug = '' } = router.query - + const brandName = getNameFromSlug(slug) return ( @@ -21,8 +21,7 @@ export default function BrandDetail() { additionalMetaTags={[ { property: 'keywords', - content: - `Jual ${brandName}, beli ${brandName}, Distributor ${brandName} Indonesia, cari ${brandName}, produk ${brandName}, ${brandName} Indonesia, harga ${brandName}` + content: `Jual ${brandName}, beli ${brandName}, Distributor ${brandName} Indonesia, cari ${brandName}, produk ${brandName}, ${brandName} Indonesia, harga ${brandName}` } ]} /> diff --git a/src/pages/shop/checkout/[status].jsx b/src/pages/shop/checkout/[status].jsx index 7c39718c..2c3bebcf 100644 --- a/src/pages/shop/checkout/[status].jsx +++ b/src/pages/shop/checkout/[status].jsx @@ -21,7 +21,7 @@ export default function Finish() { return ( <> - + diff --git a/src/pages/shop/quotation/finish.jsx b/src/pages/shop/quotation/finish.jsx index f6c0ac6b..0e9c5672 100644 --- a/src/pages/shop/quotation/finish.jsx +++ b/src/pages/shop/quotation/finish.jsx @@ -12,37 +12,37 @@ export default function FinishQuotation() { const { id } = router.query return ( <> - - - - -
-
-
- - - -
-

Terima Kasih {auth?.name}

-

- Penawaran harga kamu di Indoteknik.com berhasil dikirimkan, tim kami akan segera - menghubungi anda. -

- {id && ( - - Lihat Penawaran + + + + +
+
+
+ + + +
+

Terima Kasih {auth?.name}

+

+ Penawaran harga kamu di Indoteknik.com berhasil dikirimkan, tim kami akan segera + menghubungi anda. +

+ {id && ( + + Lihat Penawaran + + )} + + Ke Halaman Utama - )} - - Ke Halaman Utama - +
-
- - + + ) } diff --git a/src/pages/shop/search.jsx b/src/pages/shop/search.jsx index bf38d0bc..907465b7 100644 --- a/src/pages/shop/search.jsx +++ b/src/pages/shop/search.jsx @@ -13,12 +13,7 @@ export default function Search() { - {!_.isEmpty(router.query) && ( - - )} + {!_.isEmpty(router.query) && } ) } diff --git a/src/pages/sitemap/products/[id].xml.js b/src/pages/sitemap/products/[id].xml.js index e9caaa00..98c2bf40 100644 --- a/src/pages/sitemap/products/[id].xml.js +++ b/src/pages/sitemap/products/[id].xml.js @@ -8,7 +8,7 @@ export async function getServerSideProps({ res }) { const limit = 2500 const query = { limit } const products = await productSearchApi({ query: _.toQuery(query) }) - console.log(products); + console.log(products) // const sitemap = create('urlset', { encoding: 'UTF-8' }) // const date = new Date() -- cgit v1.2.3