import React, { useState, useEffect } from "react"; import Box from "@mui/material/Box"; import CircularProgress from "@mui/material/CircularProgress"; import Typography from "@mui/material/Typography"; type CircularDeterminateProps = { undoableTimeout: number; message: string; }; export const CircularDeterminate: React.FC = ({ undoableTimeout, message, }) => { const [progress, setProgress] = useState(100); const [timeCount, setTimeCount] = useState(undoableTimeout); useEffect(() => { const increaseProgress = 100 / undoableTimeout; const timer = setInterval(() => { setTimeCount((prevProgress) => prevProgress - 1); setProgress((prevProgress) => prevProgress - increaseProgress); }, 1000); if (timeCount === 0) { clearInterval(timer); } return () => { clearInterval(timer); }; }, [timeCount]); return ( <> {timeCount} {message} ); };