diff --git a/src/hooks/moderation/useModerationQueueManager.ts b/src/hooks/moderation/useModerationQueueManager.ts index e91da0c8..5f5ad491 100644 --- a/src/hooks/moderation/useModerationQueueManager.ts +++ b/src/hooks/moderation/useModerationQueueManager.ts @@ -4,6 +4,7 @@ import { useToast } from "@/hooks/use-toast"; import { logger } from "@/lib/logger"; import { getErrorMessage } from "@/lib/errorHandler"; import { MODERATION_CONSTANTS } from "@/lib/moderation/constants"; +import { useQueryClient } from '@tanstack/react-query'; import type { User } from "@supabase/supabase-js"; import { useEntityCache, @@ -81,6 +82,7 @@ export function useModerationQueueManager(config: ModerationQueueManagerConfig): }); const { user, isAdmin, isSuperuser, toast, settings } = config; + const queryClient = useQueryClient(); // Initialize sub-hooks const filters = useModerationFilters({ @@ -379,7 +381,11 @@ export function useModerationQueueManager(config: ModerationQueueManagerConfig): // Refresh stats to update counts queue.refreshStats(); - // Immediately refetch queue data to show fresh results + // Force cache invalidation before refetching to ensure fresh data + await queryClient.invalidateQueries({ + queryKey: ['moderation-queue'], + exact: false // Invalidate all query variants + }); await queueQuery.refetch(); } catch (error) { const errorMsg = getErrorMessage(error); diff --git a/src/hooks/moderation/useQueueQuery.ts b/src/hooks/moderation/useQueueQuery.ts index 6d09b744..65b41569 100644 --- a/src/hooks/moderation/useQueueQuery.ts +++ b/src/hooks/moderation/useQueueQuery.ts @@ -103,8 +103,12 @@ export function useQueueQuery(config: UseQueueQueryConfig): UseQueueQueryReturn }; // Create stable query key (TanStack Query uses this for caching/deduplication) + // Include user context to ensure proper cache isolation per user/role const queryKey = [ 'moderation-queue', + config.userId, + config.isAdmin, + config.isSuperuser, config.entityFilter, config.statusFilter, config.tab,