mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-24 13:51:14 -05:00
feat: Implement admin component optimizations
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user