release: v0.17.0
GitHub Pages / build (push) Canceled after 0s
GitHub Pages / deploy (push) Canceled after 0s
Docker image / meta (push) Successful in 24s
Docs Docker image / meta (push) Successful in 7s
Docker image / build (amd64, linux/amd64, ubuntu-latest) (push) Failing after 59s
Docs Docker image / build (amd64, linux/amd64, ubuntu-latest) (push) Failing after 30s
Docker image / merge (push) Canceled after 0s
Docs Docker image / merge (push) Canceled after 0s
Docker image / build (arm64, linux/arm64, ubuntu-24.04-arm) (push) Canceled after 0s
Docs Docker image / build (arm64, linux/arm64, ubuntu-24.04-arm) (push) Canceled after 0s
GitHub Pages / build (push) Canceled after 0s
GitHub Pages / deploy (push) Canceled after 0s
Docker image / meta (push) Successful in 24s
Docs Docker image / meta (push) Successful in 7s
Docker image / build (amd64, linux/amd64, ubuntu-latest) (push) Failing after 59s
Docs Docker image / build (amd64, linux/amd64, ubuntu-latest) (push) Failing after 30s
Docker image / merge (push) Canceled after 0s
Docs Docker image / merge (push) Canceled after 0s
Docker image / build (arm64, linux/arm64, ubuntu-24.04-arm) (push) Canceled after 0s
Docs Docker image / build (arm64, linux/arm64, ubuntu-24.04-arm) (push) Canceled after 0s
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import { useState, useEffect, useRef } from 'react';
|
||||
|
||||
const useCountdown = (duration: number) => {
|
||||
const [countdown, setCountdown] = useState(0);
|
||||
const [isSetup, toggleSetup] = useState(false);
|
||||
const timer = useRef<NodeJS.Timeout>();
|
||||
|
||||
useEffect(() => {
|
||||
if (isSetup) {
|
||||
setCountdown(duration);
|
||||
timer.current = setInterval(() => {
|
||||
setCountdown((current) => current - 1);
|
||||
}, 1000);
|
||||
} else clearInterval(timer.current as NodeJS.Timeout);
|
||||
}, [isSetup]);
|
||||
|
||||
useEffect(() => {
|
||||
if (countdown === 0) {
|
||||
toggleSetup(false);
|
||||
}
|
||||
}, [countdown]);
|
||||
|
||||
useEffect(() => () => clearInterval(timer.current as NodeJS.Timeout), []);
|
||||
|
||||
function setupCountdown() {
|
||||
toggleSetup(true);
|
||||
}
|
||||
|
||||
return { countdown, setupCountdown };
|
||||
};
|
||||
|
||||
export default useCountdown;
|
||||
Reference in New Issue
Block a user