diff --git a/src/hooks/moderation/useModerationQueueManager.ts b/src/hooks/moderation/useModerationQueueManager.ts index 0c3916a4..0333112d 100644 --- a/src/hooks/moderation/useModerationQueueManager.ts +++ b/src/hooks/moderation/useModerationQueueManager.ts @@ -73,6 +73,12 @@ export interface ModerationQueueManager { * Consolidates all queue-related logic into a single hook */ export function useModerationQueueManager(config: ModerationQueueManagerConfig): ModerationQueueManager { + console.log('🚀 [QUEUE MANAGER] Hook mounting/rendering', { + hasUser: !!config.user, + isAdmin: config.isAdmin, + timestamp: new Date().toISOString() + }); + const { user, isAdmin, isSuperuser, toast, settings } = config; // Initialize sub-hooks @@ -280,11 +286,42 @@ export function useModerationQueueManager(config: ModerationQueueManagerConfig): ); } - // Get total count - const { count } = await supabase + // Get total count - build separate query with same filters + let countQuery = supabase .from("content_submissions") - .select("*", { count: "exact", head: true }) - .match(submissionsQuery as any); + .select("*", { count: "exact", head: true }); + + // Apply same filters as main query + if (tab === "mainQueue") { + if (statusFilter === "all") { + countQuery = countQuery.in("status", ["pending", "flagged", "partially_approved"]); + } else if (statusFilter === "pending") { + countQuery = countQuery.in("status", ["pending", "partially_approved"]); + } else { + countQuery = countQuery.eq("status", statusFilter); + } + } else { + if (statusFilter === "all") { + countQuery = countQuery.in("status", ["approved", "rejected"]); + } else { + countQuery = countQuery.eq("status", statusFilter); + } + } + + if (entityFilter === "photos") { + countQuery = countQuery.eq("submission_type", "photo"); + } else if (entityFilter === "submissions") { + countQuery = countQuery.neq("submission_type", "photo"); + } + + if (!isAdmin && !isSuperuser) { + const now = new Date().toISOString(); + countQuery = countQuery.or( + `assigned_to.is.null,locked_until.lt.${now},assigned_to.eq.${user.id}`, + ); + } + + const { count } = await countQuery; pagination.setTotalCount(count || 0); diff --git a/src/hooks/moderation/useModerationSort.ts b/src/hooks/moderation/useModerationSort.ts index 4c70d8cc..d78fda52 100644 --- a/src/hooks/moderation/useModerationSort.ts +++ b/src/hooks/moderation/useModerationSort.ts @@ -3,7 +3,7 @@ import { useDebounce } from '@/hooks/useDebounce'; import type { SortConfig, SortField } from '@/types/moderation'; const STORAGE_KEY = 'moderationQueue_sortConfig'; -const SORT_DEBOUNCE_MS = 300; +const SORT_DEBOUNCE_MS = 0; // Changed from 300ms to 0ms for immediate feedback /** * Default sort configuration