import { memo, useEffect, useState } from '../../lib/teact/teact'; import buildClassName from '../../util/buildClassName'; import { formatCountdownShort } from '../../util/dates/dateFormat'; import useInterval from '../../hooks/schedulers/useInterval'; import useOldLang from '../../hooks/useOldLang'; import AnimatedCounter from '../common/AnimatedCounter'; import styles from './RoundTimer.module.scss'; type OwnProps = { duration: number; className?: string; onEnd?: NoneToVoidFunction; }; const UPDATE_FREQUENCY = 1000; const TIMER_RADIUS = 14; const RoundTimer = ({ duration, className, onEnd }: OwnProps) => { const [timeLeft, setTimeLeft] = useState(duration); const lang = useOldLang(); useInterval( () => setTimeLeft((prev) => prev - 1), timeLeft > 0 ? UPDATE_FREQUENCY : undefined, ); useEffect(() => { if (timeLeft <= 0) { onEnd?.(); } }, [timeLeft, onEnd]); useEffect(() => { setTimeLeft(duration); }, [duration]); return (