import { createSignal, onCleanup, onMount } from "solid-js"; function Countdown(props: { onEnd: (proceed?: boolean) => void; getAudioPerm: () => number; }) { const [count, setCount] = createSignal(3); let interval: any; const escHandler = (e: KeyboardEvent) => { if (e.key === "Escape") { clearInterval(interval); props.onEnd(false); } }; onMount(() => { interval = setInterval(() => { setCount((prev) => { if (prev === 0) { clearInterval(interval); props.onEnd(true); return 0; } return prev - 1; }); }, 1000); window.addEventListener("keydown", escHandler); }); onCleanup(() => { clearInterval(interval); window.removeEventListener("keydown", escHandler); }); const audioPerm = props.getAudioPerm(); const audioPrompt = { 0: "Microphone permission isn't granted yet.", 1: "Microphone access is enabled. Unmute anytime to add voice over.", 2: "Microphone is enabled." } return ( ); } export default Countdown;