import React, { useEffect, useState } from 'react'; import cls from './BottomPanel.module.scss'; type BottomPanelProps = { start: () => void; retry?: () => void; isFinishedGame?: boolean; } const BottomPanel: React.FC = (props) => { const [startTime, setStartTime] = useState(null); const [timeInterval, setTimeInterval] = useState(); function onStartBtnClickHandler(event: React.MouseEvent) { setStartTime(0); const interval = setInterval(() => { setStartTime(prev => prev !== null ? prev + 1000 : 0) }, 1000); setTimeInterval(interval); props.start(); } useEffect(() => { clearInterval(timeInterval) }, [props.isFinishedGame]) function renderActiveStatePanel() { return startTime !== null ?

{getTimeString(new Date(startTime))}

: } function onRetryBtnClickHandler() { setStartTime(null); props.retry?.(); } function renderRetryButton() { return ( <> ) } return (
{ props.isFinishedGame ? renderRetryButton() : renderActiveStatePanel() }
); }; function getTimeString(time: Date): string { let minutes = time.getMinutes().toString(); if (+minutes < 10) minutes = '0' + minutes; let seconds = time.getSeconds().toString(); if (+seconds < 10) seconds = '0' + seconds; return `${minutes}:${seconds}` } export default BottomPanel;