import style from '../styles/image.module.css'; import ImageNext from 'next/image'; import React, { useEffect, useMemo, useState } from 'react'; import { InfoIcon } from 'lucide-react'; import { Tooltip } from '@chakra-ui/react'; import { IProductDetail } from '~/types/product'; import ImageUI from '~/components/ui/image'; import moment from 'moment'; import useDevice from '@/core/hooks/useDevice'; type Props = { product: IProductDetail; }; const Image = ({ product }: Props) => { const flashSale = product.flash_sale; const [count, setCount] = useState(flashSale?.remaining_time || 0); const { isDesktop, isMobile } = useDevice(); useEffect(() => { let interval: NodeJS.Timeout; if (flashSale?.remaining_time && flashSale.remaining_time > 0) { setCount(flashSale.remaining_time); interval = setInterval(() => { setCount((prevCount) => prevCount - 1); }, 1000); } return () => { clearInterval(interval); }; }, [flashSale?.remaining_time]); const duration = moment.duration(count, 'seconds'); const image = useMemo(() => { if (!isDesktop && product.image_mobile) { return product.image_mobile + '?ratio=square'; } else { if (product.image) return product.image + '?ratio=square'; return '/images/noimage.jpeg'; } }, [product.image, product.image_mobile]); return (