summaryrefslogtreecommitdiff
path: root/src/pages/shop/product
diff options
context:
space:
mode:
authorHATEC\SPVDEV001 <tri.susilo@altama.co.id>2023-06-22 11:02:53 +0700
committerHATEC\SPVDEV001 <tri.susilo@altama.co.id>2023-06-22 11:02:53 +0700
commitbbc333053b2cb963f8a16cecb4d7f15a0111daf2 (patch)
treee66cf43693f0684330171dca508db491d7cef511 /src/pages/shop/product
parent2feb295e892d2f443e9f8cfa67b33285314da16f (diff)
page variant
Diffstat (limited to 'src/pages/shop/product')
-rw-r--r--src/pages/shop/product/variant/[slug].jsx75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/pages/shop/product/variant/[slug].jsx b/src/pages/shop/product/variant/[slug].jsx
new file mode 100644
index 00000000..ba2a79d5
--- /dev/null
+++ b/src/pages/shop/product/variant/[slug].jsx
@@ -0,0 +1,75 @@
+import Seo from '@/core/components/Seo'
+import LogoSpinner from '@/core/components/elements/Spinner/LogoSpinner'
+import { getIdFromSlug } from '@/core/utils/slug'
+import PageNotFound from '@/pages/404'
+import dynamic from 'next/dynamic'
+import { useRouter } from 'next/router'
+import cookie from 'cookie'
+import variantApi from '@/lib/product/api/variantApi'
+
+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
+ 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 variantApi({ id: getIdFromSlug(slug), headers: { Token: authToken } })
+ if (product?.length == 1) {
+ product = product[0]
+ /* const regexHtmlTags = /(<([^>]+)>)/gi
+ const regexHtmlTagsExceptP = /<\/?(?!p\b)[^>]*>/g
+ product.description = product.description
+ .replace(regexHtmlTagsExceptP, ' ')
+ .replace(regexHtmlTags, ' ')
+ .trim()*/
+ } else {
+ product = null
+ }
+
+ return {
+ props: { product }
+ }
+}
+
+export default function ProductDetail({ product }) {
+ const router = useRouter()
+
+ if (!product) return <PageNotFound />
+
+ return (
+ <BasicLayout>
+ <Seo
+ 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,
+ 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}`
+ }
+ ]}
+ />
+ {!product && (
+ <div className='container mx-auto flex justify-center pt-10'>
+ <LogoSpinner width={36} height={36} />
+ </div>
+ )}
+ {product && <Product product={product} isVariant={true} />}
+ </BasicLayout>
+ )
+}