diff --git a/src/hooks/moderation/useModerationQueueManager.ts b/src/hooks/moderation/useModerationQueueManager.ts index 318c5f2c..6ee815cc 100644 --- a/src/hooks/moderation/useModerationQueueManager.ts +++ b/src/hooks/moderation/useModerationQueueManager.ts @@ -1,4 +1,4 @@ -import { useState, useCallback, useRef, useEffect } from "react"; +import { useState, useCallback, useRef, useEffect, useMemo } from "react"; import { supabase } from "@/integrations/supabase/client"; import { useToast } from "@/hooks/use-toast"; import type { User } from "@supabase/supabase-js"; @@ -90,6 +90,12 @@ export function useModerationQueueManager(config: ModerationQueueManagerConfig): storageKey: "moderationQueue_filters", }); + // Memoize filters object for realtime subscriptions to prevent reconnections + const realtimeFilters = useMemo(() => ({ + entityFilter: filters.debouncedEntityFilter, + statusFilter: filters.debouncedStatusFilter, + }), [filters.debouncedEntityFilter, filters.debouncedStatusFilter]); + const pagination = usePagination({ initialPage: 1, initialPageSize: 25, @@ -896,10 +902,7 @@ export function useModerationQueueManager(config: ModerationQueueManagerConfig): // Initialize realtime subscriptions useRealtimeSubscriptions({ enabled: settings.useRealtimeQueue && !!user, - filters: { - entityFilter: filters.debouncedEntityFilter, - statusFilter: filters.debouncedStatusFilter, - }, + filters: realtimeFilters, onNewItem: (item: ModerationItem) => { if (recentlyRemovedRef.current.has(item.id)) return;