import BottomPopup from '@/core/components/elements/Popup/BottomPopup' import style from '../styles/price-action.module.css'; import { Button, Link, useToast } from '@chakra-ui/react' import product from 'next-seo/lib/jsonld/product' import { useRouter } from 'next/router' import { useEffect, useState } from 'react' import Image from '~/components/ui/image' import { getAuth } from '~/libs/auth' import { upsertUserCart } from '~/services/cart' import LazyLoad from 'react-lazy-load'; import ProductSimilar from '../../../../src/lib/product/components/ProductSimilar'; import { IProductDetail } from '~/types/product'; import ImageNext from 'next/image'; import { useProductCartContext } from '@/contexts/ProductCartContext' import { createSlug } from '~/libs/slug' import formatCurrency from '~/libs/formatCurrency' import { useProductDetail } from '../stores/useProductDetail'; type Props = { variantId: number | null, quantity?: number; source?: 'buy' | 'add_to_cart'; products : IProductDetail } type Status = 'idle' | 'loading' | 'success' const AddToCart = ({ variantId, quantity = 1, source = 'add_to_cart', products }: Props) => { const auth = getAuth() const router = useRouter() const toast = useToast({ position: 'top', isClosable: true }) const { askAdminUrl, } = useProductDetail(); const [product, setProducts] = useState(products); const [status, setStatus] = useState('idle') const { productCart, setRefreshCart, setProductCart, refreshCart, isLoading, setIsloading } = useProductCartContext() const productSimilarQuery = [ product?.name, `fq=-product_id_i:${product.id}`, `fq=-manufacture_id_i:${product.manufacture?.id || 0}`, ].join('&'); const [addCartAlert, setAddCartAlert] = useState(false); const handleButton = async () => { if (typeof auth !== 'object') { const currentUrl = encodeURIComponent(router.asPath) router.push(`/login?next=${currentUrl}`) return; } if ( !variantId || isNaN(quantity) || typeof auth !== 'object' ) return; if (status === 'success') return setStatus('loading') await upsertUserCart({ userId: auth.id, type: 'product', id: variantId, qty: quantity, selected: true, source: source, qtyAppend: true }) setStatus('idle') setRefreshCart(true); setAddCartAlert(true); toast({ title: 'Tambah ke keranjang', description: 'Berhasil menambahkan barang ke keranjang belanja', status: 'success', duration: 3000, isClosable: true, position: 'top', }) if (source === 'buy') { router.push('/shop/checkout?source=buy') } } useEffect(() => { if (status === 'success') setTimeout(() => { setStatus('idle') }, 3000) }, [status]) const btnConfig = { 'add_to_cart': { colorScheme: 'yellow', text: 'Keranjang' }, 'buy': { colorScheme: 'red', text: 'Beli' } } return (
{ setAddCartAlert(false); }} >
{!!product.manufacture.name ? ( {product.manufacture.name} ) : '-'}

{product.name}

{product.code}

{!!product.lowest_price && product.lowest_price.price > 0 && ( <>
{product.lowest_price.discount_percentage > 0 && ( <>
{Math.floor(product.lowest_price.discount_percentage)}%
Rp {formatCurrency(product.lowest_price.price || 0)}
)}
Rp {formatCurrency(product.lowest_price.price_discount || 0)}
)} {!!product.lowest_price && product.lowest_price.price === 0 && ( Hubungi kami untuk dapatkan harga terbaik,{' '} klik disini )}
Lihat Keranjang
Kamu Mungkin Juga Suka
) } export default AddToCart