summaryrefslogtreecommitdiff
path: root/src/pages/shop
diff options
context:
space:
mode:
Diffstat (limited to 'src/pages/shop')
-rw-r--r--src/pages/shop/category/[slug].jsx37
-rw-r--r--src/pages/shop/product/[slug].jsx49
-rw-r--r--src/pages/shop/quotation/finish.jsx2
3 files changed, 76 insertions, 12 deletions
diff --git a/src/pages/shop/category/[slug].jsx b/src/pages/shop/category/[slug].jsx
new file mode 100644
index 00000000..dbc17c06
--- /dev/null
+++ b/src/pages/shop/category/[slug].jsx
@@ -0,0 +1,37 @@
+import dynamic from 'next/dynamic'
+import { getIdFromSlug, getNameFromSlug } from '@/core/utils/slug'
+import { useRouter } from 'next/router'
+import _ from 'lodash'
+import Seo from '@/core/components/Seo'
+
+const BasicLayout = dynamic(() => import('@/core/components/layouts/BasicLayout'))
+const ProductSearch = dynamic(() => import('@/lib/product/components/ProductSearch'))
+
+export default function CategoryDetail() {
+ const router = useRouter()
+ const { slug = '' } = router.query
+
+ const categoryName = getNameFromSlug(slug)
+ const categoryId = getIdFromSlug(slug)
+ const query = {
+ fq: `manufacture_id_i:${categoryId}`
+ }
+ return (
+ <BasicLayout>
+ <Seo
+ title={`Beli ${categoryName} di Indoteknik`}
+ description={`Jual ${categoryName} Kirim Jakarta Surabaya Semarang Makassar Manado Denpasar Balikpapan Medan Palembang Lampung Bali Bandung Makassar Manado.`}
+ additionalMetaTags={[
+ {
+ property: 'keywords',
+ content: `Jual ${categoryName}, harga ${categoryName}, ${categoryName} murah, toko ${categoryName}, ${categoryName} jakarta, ${categoryName} surabaya`
+ }
+ ]}
+ />
+
+ {!_.isEmpty(router.query) && (
+ <ProductSearch query={query} prefixUrl={`/shop/category/${slug}`} />
+ )}
+ </BasicLayout>
+ )
+}
diff --git a/src/pages/shop/product/[slug].jsx b/src/pages/shop/product/[slug].jsx
index 84b848f0..5d706dec 100644
--- a/src/pages/shop/product/[slug].jsx
+++ b/src/pages/shop/product/[slug].jsx
@@ -1,48 +1,75 @@
import Seo from '@/core/components/Seo'
+import LogoSpinner from '@/core/components/elements/Spinner/LogoSpinner'
import { getIdFromSlug } from '@/core/utils/slug'
import productApi from '@/lib/product/api/productApi'
+import PageNotFound from '@/pages/404'
import dynamic from 'next/dynamic'
import { useRouter } from 'next/router'
+import cookie from 'cookie'
const BasicLayout = dynamic(() => import('@/core/components/layouts/BasicLayout'))
const Product = dynamic(() => import('@/lib/product/components/Product/Product'))
export async function getServerSideProps(context) {
const { slug } = context.query
- let product = await productApi({ id: getIdFromSlug(slug) })
+ const cookies = context.req.headers.cookie
+ const cookieObj = cookies ? cookie.parse(cookies) : {}
+ const auth = cookieObj.auth ? JSON.parse(cookieObj.auth) : {}
+ const authToken = auth?.token || ''
+
+ let product = await productApi({ id: getIdFromSlug(slug), headers: { Token: authToken } })
if (product?.length == 1) {
product = product[0]
const regexHtmlTags = /(<([^>]+)>)/gi
const regexHtmlTagsExceptP = /<\/?(?!p\b)[^>]*>/g
- if (product.description.replace(regexHtmlTags, ' ').trim() == '') {
- product.description = ''
- }
- product.description = product.description.replace(regexHtmlTagsExceptP, ' ')
- product.description = product.description.trim()
+ product.description = product.description
+ .replace(regexHtmlTagsExceptP, ' ')
+ .replace(regexHtmlTags, ' ')
+ .trim()
+ } else {
+ product = null
+ }
+
+ return {
+ props: { product }
}
- return { props: { product } }
}
export default function ProductDetail({ product }) {
const router = useRouter()
+
+ if (!product) return <PageNotFound />
+
return (
<BasicLayout>
<Seo
- title={product?.name + ' - Indoteknik.com' || ''}
+ title={product?.name || '' + ' - Indoteknik.com' || ''}
description='Temukan pilihan produk B2B Industri &amp; Alat Teknik untuk Perusahaan, UMKM &amp; Pemerintah dengan lengkap, mudah dan transparan.'
openGraph={{
url: process.env.NEXT_PUBLIC_SELF_HOST + router.asPath,
- image: product.image,
+ images: [
+ {
+ url: product?.image,
+ width: 800,
+ height: 800,
+ alt: product?.name
+ }
+ ],
type: 'product'
}}
additionalMetaTags={[
{
name: 'keywords',
- content: `${product.name}, Harga ${product.name}, Beli ${product.name}, Spesifikasi ${product.name}`
+ content: `${product?.name}, Harga ${product?.name}, Beli ${product?.name}, Spesifikasi ${product?.name}`
}
]}
/>
- <Product product={product} />
+ {!product && (
+ <div className='container mx-auto flex justify-center pt-10'>
+ <LogoSpinner width={36} height={36} />
+ </div>
+ )}
+ {product && <Product product={product} />}
</BasicLayout>
)
}
diff --git a/src/pages/shop/quotation/finish.jsx b/src/pages/shop/quotation/finish.jsx
index 0e9c5672..3850fef8 100644
--- a/src/pages/shop/quotation/finish.jsx
+++ b/src/pages/shop/quotation/finish.jsx
@@ -30,7 +30,7 @@ export default function FinishQuotation() {
</p>
{id && (
<Link
- href={`/my/transaction/${id}`}
+ href={`/my/quotations/${id}`}
className='btn-yellow !text-gray_r-12 mt-6 w-full md:w-1/3 md:mx-auto'
>
Lihat Penawaran