summaryrefslogtreecommitdiff
path: root/src-migrate/pages/shop/product
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2024-01-13 10:35:22 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2024-01-13 10:35:22 +0700
commitf62b2345f463695ef0f8f79830cd76b6e0332821 (patch)
treec06ff12a8312e3a02b0203f588db0f4da044c911 /src-migrate/pages/shop/product
parentee0b5893ac039ab05fe8247647364a923d707da3 (diff)
Refactor src migrate folder
Diffstat (limited to 'src-migrate/pages/shop/product')
-rw-r--r--src-migrate/pages/shop/product/[slug].tsx73
-rw-r--r--src-migrate/pages/shop/product/product.module.css0
2 files changed, 73 insertions, 0 deletions
diff --git a/src-migrate/pages/shop/product/[slug].tsx b/src-migrate/pages/shop/product/[slug].tsx
new file mode 100644
index 00000000..883532ed
--- /dev/null
+++ b/src-migrate/pages/shop/product/[slug].tsx
@@ -0,0 +1,73 @@
+import style from './product.module.css'
+
+import { GetServerSideProps, NextPage } from 'next'
+import React from 'react'
+import dynamic from 'next/dynamic'
+import cookie from 'cookie'
+
+import { getProductById } from '~/services/product'
+import { getIdFromSlug } from '~/libs/slug'
+import { IProductDetail } from '~/types/product'
+
+import { Seo } from '~/components/seo'
+
+const BasicLayout = dynamic(() => import('@/core/components/layouts/BasicLayout'), { ssr: false })
+const ProductDetail = dynamic(() => import('~/modules/product-detail'), { ssr: false })
+
+type PageProps = {
+ product: IProductDetail
+}
+
+export const getServerSideProps: GetServerSideProps<PageProps> = (async (context) => {
+ const { slug } = context.query
+ const cookieString = context.req.headers.cookie;
+ const cookies = cookieString ? cookie.parse(cookieString) : {};
+ const auth = cookies?.auth ? JSON.parse(cookies.auth) : {};
+ const tier = auth?.pricelist || ''
+
+ const productId = getIdFromSlug(slug as string)
+
+ const product = await getProductById(productId, tier)
+
+ if (!product) return { notFound: true }
+
+ return {
+ props: { product }
+ }
+})
+
+const ProductDetailPage: NextPage<PageProps> = ({ product }) => {
+ 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}`,
+ }
+ ]}
+ // canonical=''
+ />
+
+ <div className='md:container pt-10'>
+ <ProductDetail product={product} />
+ </div>
+ </BasicLayout>
+ )
+}
+
+export default ProductDetailPage \ No newline at end of file
diff --git a/src-migrate/pages/shop/product/product.module.css b/src-migrate/pages/shop/product/product.module.css
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src-migrate/pages/shop/product/product.module.css