'use client'; import { useEffect, useState } from 'react'; import { pushProductClicked, pushProductListProductViewed } from '@theme/utils/gtm'; import { useInView } from 'react-intersection-observer'; import useFavButton from '../../hooks/use-fav-button'; import { Product } from '@akinon/next/types'; import { Image } from '@akinon/next/components/image'; import { Price, Link } from '@theme/components'; interface Props { product: Product; width?: number; height?: number; index: number; } export const ProductItem = (props: Props) => { // TODO: Static image will change (TR) const { product, width, height, index } = props; const [viewed, setViewed] = useState(false); const { FavButton } = useFavButton(product.pk); const { ref, inView } = useInView(); const image_url = product.productimage_set[0]?.image; const absolute_url = product.absolute_url; const product_name = product.name; const retail_price = product.retail_price; const price = product.price; useEffect(() => { if (!viewed && inView) { setViewed(true); pushProductListProductViewed(product); } }, [inView, viewed, product]); return (
pushProductClicked(product)}> {image_url ? ( {product_name} ) : ( {product_name} )}
pushProductClicked(product)} > {product_name}
{parseFloat(retail_price) > parseFloat(price) && ( )}
); };