import { useRef, useEffect, useCallback } from 'react'; import { useNavigate } from 'react-router-dom'; import { useUserRole } from '@/hooks/useUserRole'; import { useAuth } from '@/hooks/useAuth'; import { AdminLayout } from '@/components/layout/AdminLayout'; import { ReportsQueue, ReportsQueueRef } from '@/components/moderation/ReportsQueue'; import { QueueSkeleton } from '@/components/moderation/QueueSkeleton'; import { useAdminSettings } from '@/hooks/useAdminSettings'; import { useModerationStats } from '@/hooks/useModerationStats'; export default function AdminReports() { const { user, loading: authLoading } = useAuth(); const { isModerator, loading: roleLoading } = useUserRole(); const navigate = useNavigate(); const reportsQueueRef = useRef(null); const { getAdminPanelRefreshMode, getAdminPanelPollInterval, } = useAdminSettings(); const refreshMode = getAdminPanelRefreshMode(); const pollInterval = getAdminPanelPollInterval(); const { refresh: refreshStats, lastUpdated } = useModerationStats({ enabled: !!user && !authLoading && !roleLoading && isModerator(), pollingEnabled: refreshMode === 'auto', pollingInterval: pollInterval, }); const handleRefresh = useCallback(() => { reportsQueueRef.current?.refresh(); refreshStats(); }, [refreshStats]); useEffect(() => { if (!authLoading && !roleLoading) { if (!user) { navigate('/auth'); return; } if (!isModerator()) { navigate('/'); return; } } }, [user, authLoading, roleLoading, navigate, isModerator]); if (authLoading || roleLoading) { return (

User Reports

Review and resolve user-submitted reports

); } if (!user || !isModerator()) { return null; } return (

User Reports

Review and resolve user-submitted reports

); }