summaryrefslogtreecommitdiff
path: root/src-migrate/modules
diff options
context:
space:
mode:
Diffstat (limited to 'src-migrate/modules')
-rw-r--r--src-migrate/modules/product-detail/components/PriceAction.tsx73
-rw-r--r--src-migrate/modules/product-detail/components/ProductDetail.tsx12
-rw-r--r--src-migrate/modules/product-detail/stores/useProductDetail.ts6
3 files changed, 67 insertions, 24 deletions
diff --git a/src-migrate/modules/product-detail/components/PriceAction.tsx b/src-migrate/modules/product-detail/components/PriceAction.tsx
index ad04de43..81271f6e 100644
--- a/src-migrate/modules/product-detail/components/PriceAction.tsx
+++ b/src-migrate/modules/product-detail/components/PriceAction.tsx
@@ -1,15 +1,16 @@
-import style from '../styles/price-action.module.css'
+import style from '../styles/price-action.module.css';
-import React, { useEffect } from 'react'
-import formatCurrency from '~/libs/formatCurrency'
-import { IProductDetail } from '~/types/product'
-import { useProductDetail } from '../stores/useProductDetail'
-import AddToCart from './AddToCart'
-import Link from 'next/link'
+import React, { useEffect } from 'react';
+import formatCurrency from '~/libs/formatCurrency';
+import { IProductDetail } from '~/types/product';
+import { useProductDetail } from '../stores/useProductDetail';
+import AddToCart from './AddToCart';
+import Link from 'next/link';
+import { getAuth } from '~/libs/auth';
type Props = {
- product: IProductDetail
-}
+ product: IProductDetail;
+};
const PriceAction = ({ product }: Props) => {
const {
@@ -18,8 +19,10 @@ const PriceAction = ({ product }: Props) => {
activeVariantId,
quantityInput,
setQuantityInput,
- askAdminUrl
- } = useProductDetail()
+ askAdminUrl,
+ isApproval,
+ setIsApproval,
+ } = useProductDetail();
useEffect(() => {
setActive(product.variants[0])
@@ -35,8 +38,13 @@ const PriceAction = ({ product }: Props) => {
}, [product, setActive]);
+
+
return (
- <div className='block md:sticky top-[150px] bg-white py-0 md:py-6 z-10' id='price-section'>
+ <div
+ className='block md:sticky top-[150px] bg-white py-0 md:py-6 z-10'
+ id='price-section'
+ >
{!!activePrice && activePrice.price > 0 && (
<>
<div className='flex items-end gap-x-2'>
@@ -56,8 +64,8 @@ const PriceAction = ({ product }: Props) => {
</div>
<div className='h-1' />
<div className={style['secondary-text']}>
- Termasuk PPN: {' '}
- Rp {formatCurrency(Math.round(activePrice.price_discount * 1.11))}
+ Termasuk PPN: Rp{' '}
+ {formatCurrency(Math.round(activePrice.price_discount * 1.11))}
</div>
</>
)}
@@ -65,7 +73,11 @@ const PriceAction = ({ product }: Props) => {
{!!activePrice && activePrice.price === 0 && (
<span>
Hubungi kami untuk dapatkan harga terbaik,{' '}
- <Link href={askAdminUrl} target='_blank' className={style['contact-us']}>
+ <Link
+ href={askAdminUrl}
+ target='_blank'
+ className={style['contact-us']}
+ >
klik disini
</Link>
</span>
@@ -74,13 +86,30 @@ const PriceAction = ({ product }: Props) => {
<div className='h-4' />
<div className={style['action-wrapper']}>
- <label htmlFor="quantity" className='hidden'>Quantity</label>
- <input type='number' id='quantity' value={quantityInput} onChange={(e) => setQuantityInput(e.target.value)} className={style['quantity-input']} />
- <AddToCart variantId={activeVariantId} quantity={Number(quantityInput)} />
- <AddToCart source='buy' variantId={activeVariantId} quantity={Number(quantityInput)} />
+ <label htmlFor='quantity' className='hidden'>
+ Quantity
+ </label>
+ <input
+ type='number'
+ id='quantity'
+ value={quantityInput}
+ onChange={(e) => setQuantityInput(e.target.value)}
+ className={style['quantity-input']}
+ />
+ <AddToCart
+ variantId={activeVariantId}
+ quantity={Number(quantityInput)}
+ />
+ {!isApproval && (
+ <AddToCart
+ source='buy'
+ variantId={activeVariantId}
+ quantity={Number(quantityInput)}
+ />
+ )}
</div>
</div>
- )
-}
+ );
+};
-export default PriceAction \ No newline at end of file
+export default PriceAction;
diff --git a/src-migrate/modules/product-detail/components/ProductDetail.tsx b/src-migrate/modules/product-detail/components/ProductDetail.tsx
index bfdf5b43..fad35a7d 100644
--- a/src-migrate/modules/product-detail/components/ProductDetail.tsx
+++ b/src-migrate/modules/product-detail/components/ProductDetail.tsx
@@ -22,6 +22,7 @@ import PriceAction from './PriceAction'
import SimilarBottom from './SimilarBottom'
import SimilarSide from './SimilarSide'
import VariantList from './VariantList'
+import { getAuth } from '~/libs/auth'
import { gtagProductDetail } from '@/core/utils/googleTag'
@@ -34,7 +35,8 @@ const SELF_HOST = process.env.NEXT_PUBLIC_SELF_HOST
const ProductDetail = ({ product }: Props) => {
const { isDesktop, isMobile } = useDevice()
const router = useRouter()
- const { setAskAdminUrl, askAdminUrl, activeVariantId } = useProductDetail()
+ const auth = getAuth()
+ const { setAskAdminUrl, askAdminUrl, activeVariantId, setIsApproval, isApproval } = useProductDetail()
useEffect(() => {
gtagProductDetail(product);
@@ -54,6 +56,12 @@ const ProductDetail = ({ product }: Props) => {
setAskAdminUrl(createdAskUrl)
}, [router.asPath, product.manufacture.name, product.name, setAskAdminUrl])
+ useEffect(() => {
+ if (typeof auth === 'object') {
+ setIsApproval(auth?.feature?.soApproval);
+ }
+ }, []);
+
return (
<>
<div className='md:flex md:flex-wrap'>
@@ -121,7 +129,7 @@ const ProductDetail = ({ product }: Props) => {
)}
<div className='h-4 md:h-10' />
- {!!activeVariantId && <ProductPromoSection productId={activeVariantId} />}
+ {!!activeVariantId && !isApproval && <ProductPromoSection productId={activeVariantId} />}
<div className={style['section-card']}>
<h2 className={style['heading']}>
diff --git a/src-migrate/modules/product-detail/stores/useProductDetail.ts b/src-migrate/modules/product-detail/stores/useProductDetail.ts
index 794f0346..2da8835d 100644
--- a/src-migrate/modules/product-detail/stores/useProductDetail.ts
+++ b/src-migrate/modules/product-detail/stores/useProductDetail.ts
@@ -6,12 +6,14 @@ type State = {
activePrice: IProductVariantDetail['price'] | null;
quantityInput: string;
askAdminUrl: string;
+ isApproval : boolean;
};
type Action = {
setActive: (variant: IProductVariantDetail) => void;
setQuantityInput: (value: string) => void;
setAskAdminUrl: (url: string) => void;
+ setIsApproval : (value : boolean) => void;
};
export const useProductDetail = create<State & Action>((set, get) => ({
@@ -19,6 +21,7 @@ export const useProductDetail = create<State & Action>((set, get) => ({
activePrice: null,
quantityInput: '1',
askAdminUrl: '',
+ isApproval : false,
setActive: (variant) => {
set({ activeVariantId: variant.id, activePrice: variant.price });
},
@@ -28,4 +31,7 @@ export const useProductDetail = create<State & Action>((set, get) => ({
setAskAdminUrl: (url: string) => {
set({ askAdminUrl: url });
},
+ setIsApproval : (value : boolean) => {
+ set({ isApproval : value })
+ }
}));