Skip to content

Commit 4919d54

Browse files
committed
handle pause by setting delay to null
1 parent 0dae45f commit 4919d54

File tree

3 files changed

+10
-4
lines changed

3 files changed

+10
-4
lines changed

src/hooks/useInterval.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ export default function useInterval(callback, delay) {
99
});
1010

1111
useEffect(() => {
12+
if (!delay) {
13+
return () => {};
14+
}
15+
1216
const interval = setInterval(() => {
1317
callbacRef.current && callbacRef.current();
1418
}, delay);

src/useStopwatch.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ export default function useStopwatch({ autoStart, offsetTimestamp }) {
66
const [seconds, setSeconds] = useState(Time.getSecondsFromExpiry(offsetTimestamp || 0));
77
const [isRunning, setIsRunning] = useState(autoStart);
88

9-
useInterval(isRunning ? () => {
9+
useInterval(() => {
1010
setSeconds((prevSeconds) => (prevSeconds + 1));
11-
} : () => {}, 1000);
11+
}, isRunning ? 1000 : null);
1212

1313
function start() {
1414
setIsRunning(true);

src/useTimer.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,13 @@ export default function useTimer({ expiryTimestamp: expiry, onExpire, autoStart
2121
time.setSeconds(time.getSeconds() + seconds); // calculate new expiry timestamp based on last paused seconds count
2222
setExpiryTimestamp(time);
2323
setIsRunning(true);
24+
setSeconds(Time.getSecondsFromExpiry(time));
2425
}
2526

2627
function start() {
2728
if (didStart) {
2829
setIsRunning(true);
30+
setSeconds(Time.getSecondsFromExpiry(expiryTimestamp));
2931
} else {
3032
resume();
3133
setDidStart(true);
@@ -38,13 +40,13 @@ export default function useTimer({ expiryTimestamp: expiry, onExpire, autoStart
3840
setSeconds(Time.getSecondsFromExpiry(newExpiryTimestamp));
3941
}
4042

41-
useInterval(isRunning ? () => {
43+
useInterval(() => {
4244
const secondsValue = Time.getSecondsFromExpiry(expiryTimestamp);
4345
if (secondsValue <= 0) {
4446
handleExpire();
4547
}
4648
setSeconds(secondsValue);
47-
} : () => {}, 1000);
49+
}, isRunning ? 1000 : null);
4850

4951
return {
5052
...Time.getTimeFromSeconds(seconds), start, pause, resume, restart, isRunning,

0 commit comments

Comments
 (0)