import { Dispatch, SetStateAction, useEffect, useState } from "react"; import { differenceInSeconds, parseISO, addHours } from "date-fns"; import GradientTitle from "./GradientTitle"; interface CountdownProps { startsAt: string; endsAt: string; setVoteStatus: Dispatch>; setEventStatus: Dispatch>; eventStatus: string; } const Countdown: React.FC = ({ startsAt, endsAt, setVoteStatus, setEventStatus, eventStatus, }) => { const [timeLeft, setTimeLeft] = useState(""); useEffect(() => { // Parsing the start and end times to Date objects in the correct format const startsAtDate = addHours(parseISO(startsAt.replace(" ", "T")), 5); // Adjusting start time to UTC+5 const endsAtDate = addHours(parseISO(endsAt.replace(" ", "T")), 5); // Adjusting end time to UTC+5 // Function to calculate time left const calculateTimeLeft = () => { const now = new Date(); const nowUTC5 = addHours(now, 5); // Adjusting current time to UTC+5 let difference; if (nowUTC5 < startsAtDate) { setEventStatus("Not started"); difference = differenceInSeconds(startsAtDate, nowUTC5); } else if (nowUTC5 < endsAtDate) { setEventStatus("Started"); difference = differenceInSeconds(endsAtDate, nowUTC5); } else { setEventStatus("Finished"); setVoteStatus("closed"); return; } const hours = Math.floor(difference / 3600); const minutes = Math.floor((difference % 3600) / 60); const seconds = difference % 60; setTimeLeft( `${hours < 10 ? "0" + hours : hours}:${ minutes < 10 ? "0" + minutes : minutes }:${seconds < 10 ? "0" + seconds : seconds}` ); }; const timer = setInterval(calculateTimeLeft, 1000); return () => clearInterval(timer); }, [startsAt, endsAt]); return (
{eventStatus === "Finished" ? ( ) : eventStatus === "Started" ? (

{timeLeft.split(":")[0]}

:

{timeLeft.split(":")[1]}

:

{timeLeft.split(":")[2]}

) : eventStatus === "Not started" ? (

Ses bermeklik

{timeLeft.split(":")[0]}

:

{timeLeft.split(":")[1]}

:

{timeLeft.split(":")[2]}

sagatdan başlaýar

) : null}
); }; export default Countdown;