From e5f91dd937a8f3adb6e7d245f4761249cbe98b31 Mon Sep 17 00:00:00 2001 From: Fabrizio Caldarelli Date: Fri, 16 May 2025 00:55:30 +0200 Subject: [PATCH 1/2] Fix clearInterval called with an invalid handle [retyui/react-native-confirmation-code-field#245] --- src/useTimer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/useTimer.ts b/src/useTimer.ts index 19e86e0..588eec8 100644 --- a/src/useTimer.ts +++ b/src/useTimer.ts @@ -6,7 +6,7 @@ type RunTimerFn = (handler: () => void, timeout: number) => number; const creteUseTimer = (clear: ClearTimerFn, runTimer: RunTimerFn) => (callback: () => void, delay: number): void => { - const timerRef = useRef(-1); + const timerRef = useRef(); useEffect(() => { const stop = () => clear(timerRef.current); From 05e0197045fb03ab03fa331a10f638da6b097336 Mon Sep 17 00:00:00 2001 From: Davyd NRB <4661784+retyui@users.noreply.github.com> Date: Fri, 16 May 2025 10:54:47 +0200 Subject: [PATCH 2/2] Update useTimer.ts to fix ts error --- src/useTimer.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/useTimer.ts b/src/useTimer.ts index 588eec8..0e37cc3 100644 --- a/src/useTimer.ts +++ b/src/useTimer.ts @@ -6,7 +6,7 @@ type RunTimerFn = (handler: () => void, timeout: number) => number; const creteUseTimer = (clear: ClearTimerFn, runTimer: RunTimerFn) => (callback: () => void, delay: number): void => { - const timerRef = useRef(); + const timerRef = useRef(undefined); useEffect(() => { const stop = () => clear(timerRef.current); @@ -20,12 +20,10 @@ const creteUseTimer = }; export const useInterval = creteUseTimer( - // @ts-expect-error - I know better - clearInterval, + clearInterval as ClearTimerFn, setInterval, ); export const useTimeout = creteUseTimer( - // @ts-expect-error - I know better - clearTimeout, + clearTimeout as ClearTimerFn, setTimeout, );