From 25f79a466750320e860180f54c0f7013dda5df7e Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Mon, 6 Oct 2025 17:55:33 +0000 Subject: [PATCH] Refactor system log to own page --- src/App.tsx | 2 + src/components/layout/AdminSidebar.tsx | 7 +++- src/pages/AdminDashboard.tsx | 18 +------- src/pages/AdminSystemLog.tsx | 58 ++++++++++++++++++++++++++ 4 files changed, 68 insertions(+), 17 deletions(-) create mode 100644 src/pages/AdminSystemLog.tsx diff --git a/src/App.tsx b/src/App.tsx index e3cf5574..10568640 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -37,6 +37,7 @@ import Admin from "./pages/Admin"; import AdminDashboard from "./pages/AdminDashboard"; import AdminModeration from "./pages/AdminModeration"; import AdminReports from "./pages/AdminReports"; +import AdminSystemLog from "./pages/AdminSystemLog"; import AdminUsers from "./pages/AdminUsers"; import AdminSettings from "./pages/AdminSettings"; @@ -78,6 +79,7 @@ function AppContent() { } /> } /> } /> + } /> } /> } /> } /> diff --git a/src/components/layout/AdminSidebar.tsx b/src/components/layout/AdminSidebar.tsx index 8ca44f47..546fe67c 100644 --- a/src/components/layout/AdminSidebar.tsx +++ b/src/components/layout/AdminSidebar.tsx @@ -1,4 +1,4 @@ -import { LayoutDashboard, FileText, Flag, Users, Settings, ArrowLeft } from 'lucide-react'; +import { LayoutDashboard, FileText, Flag, Users, Settings, ArrowLeft, ScrollText } from 'lucide-react'; import { NavLink } from 'react-router-dom'; import { useUserRole } from '@/hooks/useUserRole'; import { @@ -37,6 +37,11 @@ export function AdminSidebar() { url: '/admin/reports', icon: Flag, }, + { + title: 'System Log', + url: '/admin/system-log', + icon: ScrollText, + }, { title: 'Users', url: '/admin/users', diff --git a/src/pages/AdminDashboard.tsx b/src/pages/AdminDashboard.tsx index aa2a76c2..9ba1bc97 100644 --- a/src/pages/AdminDashboard.tsx +++ b/src/pages/AdminDashboard.tsx @@ -1,6 +1,6 @@ import { useRef, useEffect, useCallback, useState } from 'react'; import { useNavigate } from 'react-router-dom'; -import { FileText, Flag, AlertCircle, Activity, ShieldAlert, ScrollText } from 'lucide-react'; +import { FileText, Flag, AlertCircle, Activity, ShieldAlert } from 'lucide-react'; import { useUserRole } from '@/hooks/useUserRole'; import { useAuth } from '@/hooks/useAuth'; import { Card, CardContent } from '@/components/ui/card'; @@ -10,7 +10,6 @@ import { AdminLayout } from '@/components/layout/AdminLayout'; import { ModerationQueue, ModerationQueueRef } from '@/components/moderation/ModerationQueue'; import { ReportsQueue } from '@/components/moderation/ReportsQueue'; import { RecentActivity } from '@/components/moderation/RecentActivity'; -import { SystemActivityLog, SystemActivityLogRef } from '@/components/admin/SystemActivityLog'; import { useModerationStats } from '@/hooks/useModerationStats'; import { useAdminSettings } from '@/hooks/useAdminSettings'; import { supabase } from '@/integrations/supabase/client'; @@ -27,7 +26,6 @@ export default function AdminDashboard() { const moderationQueueRef = useRef(null); const reportsQueueRef = useRef(null); const recentActivityRef = useRef(null); - const systemLogRef = useRef(null); const { getAdminPanelRefreshMode, @@ -77,9 +75,6 @@ export default function AdminDashboard() { case 'activity': recentActivityRef.current?.refresh(); break; - case 'system-log': - systemLogRef.current?.refresh(); - break; } setTimeout(() => setIsRefreshing(false), 500); @@ -228,7 +223,7 @@ export default function AdminDashboard() { - + Moderation Queue @@ -254,11 +249,6 @@ export default function AdminDashboard() { Recent Activity Activity - - - System Log - Log - @@ -272,10 +262,6 @@ export default function AdminDashboard() { - - - - diff --git a/src/pages/AdminSystemLog.tsx b/src/pages/AdminSystemLog.tsx new file mode 100644 index 00000000..75ea5a56 --- /dev/null +++ b/src/pages/AdminSystemLog.tsx @@ -0,0 +1,58 @@ +import { useEffect } from 'react'; +import { useNavigate } from 'react-router-dom'; +import { useAuth } from '@/hooks/useAuth'; +import { useUserRole } from '@/hooks/useUserRole'; +import { AdminLayout } from '@/components/layout/AdminLayout'; +import { SystemActivityLog } from '@/components/admin/SystemActivityLog'; + +export default function AdminSystemLog() { + const { user, loading: authLoading } = useAuth(); + const { isModerator, loading: roleLoading } = useUserRole(); + const navigate = useNavigate(); + + useEffect(() => { + if (!authLoading && !roleLoading) { + if (!user) { + navigate('/auth'); + return; + } + + if (!isModerator()) { + navigate('/'); + return; + } + } + }, [user, authLoading, roleLoading, navigate, isModerator]); + + if (authLoading || roleLoading) { + return ( +
+
+
+
+

Loading system log...

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

System Activity Log

+

+ Complete audit trail of all system changes and administrative actions +

+
+ + +
+
+ ); +}