11import { TableCellValue } from 'mobx-lark' ;
2- import { useEffect , useEffectEvent , useMemo , useState } from 'react' ;
2+ import { useCallback , useEffect , useMemo , useState } from 'react' ;
33
44import { CountdownWindow , firstTextOf , resolveCountdownState , timeOf } from './utility' ;
55
@@ -9,7 +9,7 @@ export const useLiveCountdownState = <T extends CountdownWindow>(
99 endTime ?: TableCellValue ,
1010) => {
1111 const [ referenceTime , setReferenceTime ] = useState < number | null > ( null ) ;
12- const refreshReferenceTime = useEffectEvent ( ( ) => setReferenceTime ( Date . now ( ) ) ) ;
12+ const refreshReferenceTime = useCallback ( ( ) => setReferenceTime ( Date . now ( ) ) , [ ] ) ;
1313
1414 useEffect ( ( ) => refreshReferenceTime ( ) , [ refreshReferenceTime ] ) ;
1515
@@ -31,9 +31,10 @@ export const useLiveCountdownState = <T extends CountdownWindow>(
3131
3232 if ( ! Number . isFinite ( targetTime ) ) return ;
3333
34+ const delay = Math . min ( 2_147_483_647 , Math . max ( 1000 , targetTime - Date . now ( ) + 1000 ) ) ;
3435 const timer = window . setTimeout (
3536 refreshReferenceTime ,
36- Math . max ( 1000 , targetTime - Date . now ( ) + 1000 ) ,
37+ delay ,
3738 ) ;
3839
3940 return ( ) => window . clearTimeout ( timer ) ;
0 commit comments