import Image from 'next/image'; import { useEffect, useState } from 'react'; import CountDown from '@/core/components/elements/CountDown/CountDown'; import ProductSlider from '@/lib/product/components/ProductSlider'; import { FlashSaleSkeleton } from '../skeleton/FlashSaleSkeleton'; const FlashSale = () => { const [flashSales, setFlashSales] = useState(null); const [isLoading, setIsLoading] = useState(true); const [duration, setDuration] = useState(); const calculateRemainingTime = (endDate) => { const currentTime = new Date(); const endTime = new Date(endDate); const remainingTimeInSeconds = (endTime - currentTime) / 1000; return Math.max(Math.round(remainingTimeInSeconds), 0); }; useEffect(() => { const loadFlashSales = async () => { const res = await fetch('/api/flashsale-header'); const { data } = await res.json(); if (data) { setFlashSales(data); const remainingTime = calculateRemainingTime(data[0]?.endDate); setDuration(remainingTime); } setIsLoading(false); }; loadFlashSales(); }, []); if (isLoading) { return ; } return (
{flashSales?.length > 0 && (
{flashSales.map((flashSale, index) => (
{flashSale.name}
{flashSale.name} {flashSale.name}
))}
)}
); }; const FlashSaleProduct = ({ flashSaleId, duration }) => { const [products, setProducts] = useState(null); useEffect(() => { const data_search = new URLSearchParams({ query: `fq=flashsale_id_i:${flashSaleId}&fq=flashsale_price_f:[1 TO *]&limit=500&orderBy=flashsale-price-asc&source=similar`, operation: 'AND', duration: `${duration}`, }); const loadProducts = async () => { const res = await fetch( `/api/search-flashsale?${data_search.toString()}` ); const { data } = await res.json(); setProducts(data.response); }; loadProducts(); }, []); return ; }; export default FlashSale;