feat: Implement admin component optimizations

This commit is contained in:
gpt-engineer-app[bot]
2025-10-31 00:02:35 +00:00
parent d40f0f13aa
commit 44f38be77d
9 changed files with 577 additions and 247 deletions

View File

@@ -14,7 +14,7 @@ import { ReportsQueue } from '@/components/moderation/ReportsQueue';
import { RecentActivity } from '@/components/moderation/RecentActivity';
import { useModerationStats } from '@/hooks/useModerationStats';
import { useAdminSettings } from '@/hooks/useAdminSettings';
import { supabase } from '@/integrations/supabase/client';
import { useVersionAudit } from '@/hooks/admin/useVersionAudit';
import { Alert, AlertDescription } from '@/components/ui/alert';
import { Skeleton } from '@/components/ui/skeleton';
import { QueueSkeleton } from '@/components/moderation/QueueSkeleton';
@@ -28,7 +28,9 @@ export default function AdminDashboard() {
const navigate = useNavigate();
const [isRefreshing, setIsRefreshing] = useState(false);
const [activeTab, setActiveTab] = useState('moderation');
const [suspiciousVersionsCount, setSuspiciousVersionsCount] = useState<number>(0);
const { data: versionAudit } = useVersionAudit();
const suspiciousVersionsCount = versionAudit?.totalCount || 0;
const moderationQueueRef = useRef<ModerationQueueRef>(null);
const reportsQueueRef = useRef<any>(null);
@@ -48,32 +50,9 @@ export default function AdminDashboard() {
pollingInterval: pollInterval,
});
// Check for suspicious versions (bypassed submission flow)
const checkSuspiciousVersions = useCallback(async () => {
if (!user || !isModerator()) return;
// Query all version tables for suspicious entries (no changed_by)
const queries = [
supabase.from('park_versions').select('*', { count: 'exact', head: true }).is('created_by', null),
supabase.from('ride_versions').select('*', { count: 'exact', head: true }).is('created_by', null),
supabase.from('company_versions').select('*', { count: 'exact', head: true }).is('created_by', null),
supabase.from('ride_model_versions').select('*', { count: 'exact', head: true }).is('created_by', null),
];
const results = await Promise.all(queries);
const totalCount = results.reduce((sum, result) => sum + (result.count || 0), 0);
setSuspiciousVersionsCount(totalCount);
}, [user, isModerator]);
useEffect(() => {
checkSuspiciousVersions();
}, [checkSuspiciousVersions]);
const handleRefresh = useCallback(async () => {
setIsRefreshing(true);
await refreshStats();
await checkSuspiciousVersions();
// Refresh active tab's content
switch (activeTab) {
@@ -89,7 +68,7 @@ export default function AdminDashboard() {
}
setTimeout(() => setIsRefreshing(false), 500);
}, [refreshStats, checkSuspiciousVersions, activeTab]);
}, [refreshStats, activeTab]);
const handleStatCardClick = (cardType: 'submissions' | 'reports' | 'flagged') => {
switch (cardType) {