summaryrefslogtreecommitdiff
path: root/src/pages
diff options
context:
space:
mode:
Diffstat (limited to 'src/pages')
-rw-r--r--src/pages/_document.jsx8
-rw-r--r--src/pages/api/activation-request.js2
-rw-r--r--src/pages/api/shop/search.js23
-rw-r--r--src/pages/google_merchant/products/[page].js4
-rw-r--r--src/pages/index.jsx48
-rw-r--r--src/pages/shop/brands/[slug].jsx2
-rw-r--r--src/pages/tracking-order.jsx27
7 files changed, 80 insertions, 34 deletions
diff --git a/src/pages/_document.jsx b/src/pages/_document.jsx
index cd60bd89..6af6294f 100644
--- a/src/pages/_document.jsx
+++ b/src/pages/_document.jsx
@@ -41,13 +41,13 @@ export default function MyDocument() {
content='328wmjs7hcnz74rwsqzxvq50rmbtm2'
/>
- <Script
+ {/* <Script
async
strategy='beforeInteractive'
src='https://www.googletagmanager.com/gtag/js?id=UA-10501937-1'
- />
+ /> */}
- <Script
+ {/* <Script
async
id='google-analytics-ua'
strategy='beforeInteractive'
@@ -59,7 +59,7 @@ export default function MyDocument() {
gtag('config', 'UA-10501937-1');
`,
}}
- />
+ /> */}
<Script
async
diff --git a/src/pages/api/activation-request.js b/src/pages/api/activation-request.js
index 61dbb597..98d27f78 100644
--- a/src/pages/api/activation-request.js
+++ b/src/pages/api/activation-request.js
@@ -7,7 +7,7 @@ export default async function handler(req, res) {
let result = await odooApi('POST', '/api/v1/user/activation-request', { email })
if (result.activationRequest) {
mailer.sendMail({
- from: 'sales@indoteknik.com',
+ from: 'Indoteknik.com <noreply@indoteknik.com>',
to: result.user.email,
subject: 'Permintaan Aktivasi Akun Indoteknik',
html: `
diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js
index b6b8c795..6f98efcb 100644
--- a/src/pages/api/shop/search.js
+++ b/src/pages/api/shop/search.js
@@ -39,10 +39,13 @@ export default async function handler(req, res) {
paramOrderBy += 'flashsale_price_f ASC';
break;
default:
- paramOrderBy += 'product_rating_f DESC, price_discount_f DESC';
+ paramOrderBy += '';
break;
}
-
+
+ let checkQ = q.trim().split(/[\s\+\-\!\(\)\{\}\[\]\^"~\*\?:\\\/]+/);
+ let newQ = checkQ.length > 1 ? escapeSolrQuery(q) + '*' : escapeSolrQuery(q);
+
let offset = (page - 1) * limit;
let parameter = [
'facet.field=manufacture_name_s',
@@ -51,12 +54,12 @@ export default async function handler(req, res) {
'indent=true',
`facet.query=${escapeSolrQuery(q)}`,
`q.op=${operation}`,
- `q=${escapeSolrQuery(q)}`,
+ `q=${newQ}`,
'qf=name_s',
`start=${parseInt(offset)}`,
`rows=${limit}`,
`sort=${paramOrderBy}`,
- `fq=-publish_b:false`,
+ `fq=-publish_b:false, product_rating_f:[8 TO *], price_tier1_v2_f:[1 TO *]`,
];
if (priceFrom > 0 || priceTo > 0) {
@@ -77,7 +80,10 @@ export default async function handler(req, res) {
parameter.push(
`fq=${brand
.split(',')
- .map((manufacturer) => `manufacture_name:"${encodeURIComponent(manufacturer)}"`)
+ .map(
+ (manufacturer) =>
+ `manufacture_name:"${encodeURIComponent(manufacturer)}"`
+ )
.join(' OR ')}`
);
if (category)
@@ -120,12 +126,14 @@ export default async function handler(req, res) {
const escapeSolrQuery = (query) => {
if (query == '*') return query;
+
+ query = query.replace(/-/g, ' ');
- const specialChars = /([\+\-\!\(\)\{\}\[\]\^"~\*\?:\\\/])/g;
+ const specialChars = /([\+\!\(\)\{\}\[\]\^"~\*\?:\\\/])/g;
const words = query.split(/\s+/);
const escapedWords = words.map((word) => {
if (specialChars.test(word)) {
- return `"${word.replace(specialChars, '\\$1')}"`;
+ return word.replace(specialChars, '\\$1');
}
return word;
});
@@ -133,6 +141,7 @@ const escapeSolrQuery = (query) => {
return escapedWords.join(' ');
};
+
/*const productResponseMap = (products, pricelist) => {
return products.map((product) => {
let price = product.price_tier1_v2_f || 0
diff --git a/src/pages/google_merchant/products/[page].js b/src/pages/google_merchant/products/[page].js
index 6e0eb703..0c2cf3c5 100644
--- a/src/pages/google_merchant/products/[page].js
+++ b/src/pages/google_merchant/products/[page].js
@@ -50,7 +50,7 @@ export async function getServerSideProps({ res, query }) {
let categoryId = null;
if (brandId && brandId in brandsData) {
- categoryId = brandsData[brandId].category_ids?.[0] ?? null;
+ categoryId = brandsData[brandId]?.category_ids?.[0] ?? null;
} else {
const solrBrand = await getBrandById(brandId);
brandsData[brandId] = solrBrand;
@@ -58,7 +58,7 @@ export async function getServerSideProps({ res, query }) {
}
if (categoryId && categoryId in categoriesData) {
- categoryName = categoriesData[categoryId].name_s ?? null;
+ categoryName = categoriesData[categoryId]?.name_s ?? null;
} else {
const solrCategory = await getCategoryById(categoryId);
categoriesData[categoryId] = solrCategory;
diff --git a/src/pages/index.jsx b/src/pages/index.jsx
index d649ee17..613950a6 100644
--- a/src/pages/index.jsx
+++ b/src/pages/index.jsx
@@ -8,12 +8,14 @@ import DesktopView from '@/core/components/views/DesktopView';
import MobileView from '@/core/components/views/MobileView';
import { FlashSaleSkeleton } from '@/lib/flashSale/skeleton/FlashSaleSkeleton';
import PreferredBrandSkeleton from '@/lib/home/components/Skeleton/PreferredBrandSkeleton';
+import BannerPromoSkeleton from '@/lib/home/components/Skeleton/BannerPromoSkeleton';
import PromotinProgram from '@/lib/promotinProgram/components/HomePage';
import PagePopupIformation from '~/modules/popup-information';
import CategoryPilihan from '../lib/home/components/CategoryPilihan';
import odooApi from '@/core/api/odooApi';
import { getAuth } from '~/libs/auth';
// import { getAuth } from '~/libs/auth';
+import useProductDetail from '~/modules/product-detail/stores/useProductDetail';
const BasicLayout = dynamic(() =>
import('@/core/components/layouts/BasicLayout')
@@ -45,9 +47,12 @@ const FlashSale = dynamic(
}
);
-// const ProgramPromotion = dynamic(() =>
-// import('@/lib/home/components/PromotionProgram')
-// );
+const ProgramPromotion = dynamic(() =>
+ import('@/lib/home/components/PromotionProgram'),
+{
+ loading: () => <BannerPromoSkeleton />,
+}
+);
const BannerSection = dynamic(() =>
import('@/lib/home/components/BannerSection')
@@ -93,8 +98,8 @@ export default function Home({categoryId}) {
}, [])
const [dataCategories, setDataCategories] = useState([])
-
return (
+ <>
<BasicLayout>
<Seo
title='Indoteknik.com: B2B Industrial Supply & Solution'
@@ -102,11 +107,9 @@ export default function Home({categoryId}) {
additionalMetaTags={[
{
name: 'keywords',
- content:
- 'indoteknik, indoteknik.com, toko teknik, toko perkakas, jual genset, jual fogging, jual krisbow, harga krisbow, harga alat safety, harga pompa air',
+ content: 'indoteknik, indoteknik.com, toko teknik, toko perkakas, jual genset, jual fogging, jual krisbow, harga krisbow, harga alat safety, harga pompa air',
},
- ]}
- />
+ ]} />
<PagePopupIformation />
@@ -131,28 +134,32 @@ export default function Home({categoryId}) {
</div>
<div className='my-16 flex flex-col gap-y-8'>
- <div className='my-16 flex flex-col gap-y-8'>
<ServiceList />
<div id='flashsale'>
<PreferredBrand />
</div>
{!auth?.feature?.soApproval && (
<>
- {/* <ProgramPromotion /> <FlashSale /> */}
+ <DelayRender renderAfter={200}>
+ <ProgramPromotion />
+ </DelayRender>
+ <DelayRender renderAfter={200}>
+ <FlashSale />
+ </DelayRender>
</>
)}
<PromotinProgram />
- <CategoryPilihan categories={dataCategories}/>
- <CategoryDynamic/>
+ {dataCategories &&(
+ <CategoryPilihan categories={dataCategories} />
+ )}
+ <CategoryDynamic />
<CategoryHomeId />
<BannerSection />
<CustomerReviews />
</div>
- </div>
</div>
- </DesktopView>
-
- <MobileView>
+ </DesktopView>
+ <MobileView>
<DelayRender renderAfter={200}>
<HeroBanner />
</DelayRender>
@@ -168,7 +175,7 @@ export default function Home({categoryId}) {
{!auth?.feature?.soApproval && (
<>
<DelayRender renderAfter={400}>
- {/* <ProgramPromotion /> */}
+ <ProgramPromotion />
</DelayRender>
<DelayRender renderAfter={600}>
<FlashSale />
@@ -179,8 +186,10 @@ export default function Home({categoryId}) {
<PromotinProgram />
</DelayRender>
<DelayRender renderAfter={600}>
- <CategoryPilihan categories={dataCategories}/>
- <CategoryDynamicMobile/>
+ {dataCategories &&(
+ <CategoryPilihan categories={dataCategories} />
+ )}
+ <CategoryDynamicMobile />
</DelayRender>
<DelayRender renderAfter={800}>
<PopularProduct />
@@ -195,5 +204,6 @@ export default function Home({categoryId}) {
</div>
</MobileView>
</BasicLayout>
+ </>
);
} \ No newline at end of file
diff --git a/src/pages/shop/brands/[slug].jsx b/src/pages/shop/brands/[slug].jsx
index e786ef78..88e9b302 100644
--- a/src/pages/shop/brands/[slug].jsx
+++ b/src/pages/shop/brands/[slug].jsx
@@ -18,7 +18,7 @@ export default function BrandDetail() {
const brandName = getNameFromSlug(slug)
const id = getIdFromSlug(slug)
const {brand} = useBrand({id})
- if (!brand || !brand.data || _.isEmpty(brand.data)) {
+ if ( !brand.isLoading && _.isEmpty(brand.data)) {
return <PageNotFound />;
}
return (
diff --git a/src/pages/tracking-order.jsx b/src/pages/tracking-order.jsx
new file mode 100644
index 00000000..002acd42
--- /dev/null
+++ b/src/pages/tracking-order.jsx
@@ -0,0 +1,27 @@
+import Seo from '@/core/components/Seo'
+import dynamic from 'next/dynamic'
+import SimpleFooter from '@/core/components/elements/Footer/SimpleFooter';
+import BasicLayout from '@/core/components/layouts/BasicLayout';
+import DesktopView from '@/core/components/views/DesktopView';
+import MobileView from '@/core/components/views/MobileView';
+const PageTrackingOrder = dynamic(() => import('@/lib/tracking-order/component/TrackingOrder'))
+
+export default function TrackingOrder() {
+ return (
+ <>
+ <Seo title='Tracking Order - Indoteknik.com' />
+
+ <DesktopView>
+ <BasicLayout>
+ <PageTrackingOrder/>
+ </BasicLayout>
+ </DesktopView>
+
+ <MobileView>
+ <BasicLayout>
+ <PageTrackingOrder/>
+ </BasicLayout>
+ </MobileView>
+ </>
+ );
+}