From fb4396e217dd2da9243e2bdb47dcde025f0538e4 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Thu, 9 Oct 2025 12:18:50 +0000 Subject: [PATCH] Fix moderation queue refreshing --- src/components/moderation/ModerationQueue.tsx | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/components/moderation/ModerationQueue.tsx b/src/components/moderation/ModerationQueue.tsx index 0fdda434..01c5f65f 100644 --- a/src/components/moderation/ModerationQueue.tsx +++ b/src/components/moderation/ModerationQueue.tsx @@ -115,6 +115,15 @@ export const ModerationQueue = forwardRef((props, ref) => { const refreshStrategy = getAutoRefreshStrategy(); const preserveInteraction = getPreserveInteractionState(); + // Store admin settings in refs to avoid triggering fetchItems recreation + const refreshStrategyRef = useRef(refreshStrategy); + const preserveInteractionRef = useRef(preserveInteraction); + + useEffect(() => { + refreshStrategyRef.current = refreshStrategy; + preserveInteractionRef.current = preserveInteraction; + }, [refreshStrategy, preserveInteraction]); + // Sync itemsRef and loadedIdsRef with items state useEffect(() => { itemsRef.current = items; @@ -461,12 +470,12 @@ export const ModerationQueue = forwardRef((props, ref) => { setIsRefreshing(false); setIsInitialLoad(false); } - }, [ - user, - refreshStrategy, - preserveInteraction, - toast - ]); + }, [user, toast, isAdmin, isSuperuser]); + + // Log when fetchItems is recreated to help debug refresh issues + useEffect(() => { + console.log('🔄 fetchItems callback recreated'); + }, [fetchItems]); // Debounced filters to prevent rapid-fire calls const debouncedEntityFilter = useDebounce(activeEntityFilter, 500); @@ -490,8 +499,7 @@ export const ModerationQueue = forwardRef((props, ref) => { if (user) { fetchItems(debouncedEntityFilter, debouncedStatusFilter, false); // Show loading } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [debouncedEntityFilter, debouncedStatusFilter, user]); + }, [debouncedEntityFilter, debouncedStatusFilter, user, fetchItems]); // Polling for auto-refresh useEffect(() => {