Skip to content

Commit 26e174b

Browse files
committed
fix: setting interval
1 parent 61cd168 commit 26e174b

File tree

1 file changed

+26
-25
lines changed

1 file changed

+26
-25
lines changed

src/utils/hooks/useAutoRefreshInterval.ts

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -13,35 +13,36 @@ export function useAutoRefreshInterval(): [number, (value: number) => void] {
1313

1414
const lastHiddenTimeRef = React.useRef<number | null>(null);
1515

16-
const handleVisibilityChange = React.useCallback(() => {
17-
const isVisible = document.visibilityState === 'visible';
18-
19-
if (isVisible) {
20-
// If more than settingValue milliseconds have passed since the page was hidden,
21-
// trigger an immediate update
22-
const shouldTriggerImmediate =
23-
lastHiddenTimeRef.current &&
24-
settingValue !== DISABLED_INTERVAL &&
25-
Date.now() - lastHiddenTimeRef.current >= settingValue;
26-
27-
if (shouldTriggerImmediate) {
28-
setEffectiveInterval(IMMEDIATE_UPDATE_INTERVAL);
29-
30-
setTimeout(() => {
31-
setEffectiveInterval(settingValue);
32-
}, 0);
16+
React.useEffect(() => {
17+
setEffectiveInterval(settingValue);
18+
19+
const handleVisibilityChange = () => {
20+
const isVisible = document.visibilityState === 'visible';
21+
if (isVisible) {
22+
// If more than settingValue milliseconds have passed since the page was hidden,
23+
// trigger an immediate update
24+
const shouldTriggerImmediate =
25+
lastHiddenTimeRef.current &&
26+
settingValue !== DISABLED_INTERVAL &&
27+
Date.now() - lastHiddenTimeRef.current >= settingValue;
28+
29+
if (shouldTriggerImmediate) {
30+
setEffectiveInterval(IMMEDIATE_UPDATE_INTERVAL);
31+
32+
setTimeout(() => {
33+
setEffectiveInterval(settingValue);
34+
}, 0);
35+
}
36+
37+
lastHiddenTimeRef.current = null;
38+
} else {
39+
lastHiddenTimeRef.current = Date.now();
3340
}
41+
};
3442

35-
lastHiddenTimeRef.current = null;
36-
} else {
37-
lastHiddenTimeRef.current = Date.now();
38-
}
39-
}, [settingValue]);
40-
41-
React.useEffect(() => {
4243
document.addEventListener('visibilitychange', handleVisibilityChange);
4344
return () => document.removeEventListener('visibilitychange', handleVisibilityChange);
44-
}, [handleVisibilityChange]);
45+
}, [settingValue]);
4546

4647
return [effectiveInterval, setSettingValue];
4748
}

0 commit comments

Comments
 (0)