diff --git a/src/hooks/moderation/useModerationQueueManager.ts b/src/hooks/moderation/useModerationQueueManager.ts index 317c9cac..772f2cd6 100644 --- a/src/hooks/moderation/useModerationQueueManager.ts +++ b/src/hooks/moderation/useModerationQueueManager.ts @@ -894,21 +894,21 @@ export function useModerationQueueManager(config: ModerationQueueManagerConfig): }; }, [user, settings.refreshMode, settings.pollInterval, loadingState, settings.useRealtimeQueue]); + // Extract the boolean value to prevent effect re-runs when settings object changes + const isRefreshOnTabVisibleEnabled = settings.refreshOnTabVisible === true; + // Visibility change handler useEffect(() => { - // HARD CHECK: Explicit boolean comparison to prevent any truthy coercion - const isEnabled = settings.refreshOnTabVisible === true; - console.log("๐Ÿ” [VISIBILITY EFFECT] Hard check", { refreshOnTabVisible: settings.refreshOnTabVisible, typeOf: typeof settings.refreshOnTabVisible, - isEnabled, - willAttachListener: isEnabled, + isRefreshOnTabVisibleEnabled, + willAttachListener: isRefreshOnTabVisibleEnabled, timestamp: new Date().toISOString(), }); // Early return if feature is disabled - if (!isEnabled) { + if (!isRefreshOnTabVisibleEnabled) { console.log(" โœ… Feature DISABLED - skipping all visibility logic"); console.log(" โœ… Tab focus will NOT trigger refreshes"); @@ -924,7 +924,7 @@ export function useModerationQueueManager(config: ModerationQueueManagerConfig): const handleVisibilityChange = () => { // Double-check setting before doing anything (defensive check) - if (!settings.refreshOnTabVisible) { + if (!isRefreshOnTabVisibleEnabled) { console.log("โš ๏ธ Visibility handler called but setting is disabled - ignoring"); return; } @@ -954,7 +954,7 @@ export function useModerationQueueManager(config: ModerationQueueManagerConfig): document.removeEventListener("visibilitychange", handleVisibilityChange); console.log("๐Ÿงน Visibility listener removed"); }; - }, [settings.refreshOnTabVisible]); + }, [isRefreshOnTabVisibleEnabled]); // Initialize realtime subscriptions useRealtimeSubscriptions({