generated from hamadsuniverse/codecatalyst-sst-app
-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathCountdownTimer.tsx
44 lines (34 loc) · 1.01 KB
/
CountdownTimer.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import React, { useState, useEffect } from 'react';
interface Props {
minutes: number; // Number of minutes for countdown
}
const CountdownTimer: React.FC<Props> = ({ minutes }) => {
const [remainingTime, setRemainingTime] = useState<number>(minutes * 60); // Convert minutes to seconds
useEffect(() => {
const timer = setInterval(() => {
setRemainingTime(prevTime => {
if (prevTime <= 0) {
clearInterval(timer);
return 0;
} else {
return prevTime - 1;
}
});
}, 1000);
return () => clearInterval(timer);
}, [minutes]);
const formatTime = (time: number): string => {
const minutes = Math.floor(time / 60);
const seconds = time % 60;
return `${padZero(minutes)}:${padZero(seconds)}`;
};
const padZero = (num: number): string => {
return num < 10 ? `0${num}` : `${num}`;
};
return (
<div className="remaining-time">
{formatTime(remainingTime)} min
</div>
);
};
export default CountdownTimer;