import { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Button } from '@/components/ui/button'; // import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Badge } from '@/components/ui/badge'; import { useToast } from '@/hooks/use-toast'; import { supabase } from '@/lib/supabase'; import { Users, Settings, Activity, Shield, Bell, Monitor, Lock, AlertTriangle, ArrowLeft } from 'lucide-react'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '@/components/ui/table'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select'; import { SessionMonitor } from '@/components/security/SessionMonitor'; import { PermissionEditor } from '@/components/security/PermissionEditor'; import { SecurityAudit } from '@/components/security/SecurityAudit'; import { KycApprovalTab } from '@/components/admin/KycApprovalTab'; import { CommissionVotingTab } from '@/components/admin/CommissionVotingTab'; import { CommissionSetupTab } from '@/components/admin/CommissionSetupTab'; export default function AdminPanel() { const navigate = useNavigate(); const [users, setUsers] = useState>>([]); const [adminRoles, setAdminRoles] = useState>>([]); const [loading, setLoading] = useState(true); const { toast } = useToast(); useEffect(() => { loadAdminData(); }, []); const loadAdminData = async () => { try { // Load users const { data: profiles } = await supabase .from('profiles') .select('*') .order('created_at', { ascending: false }); // Load admin roles const { data: roles } = await supabase .from('admin_roles') .select('*'); setUsers(profiles || []); setAdminRoles(roles || []); } catch (error) { if (import.meta.env.DEV) console.error('Error loading admin data:', error); } finally { setLoading(false); } }; const updateUserRole = async (userId: string, role: string) => { try { if (role === 'none') { await supabase .from('admin_roles') .delete() .eq('user_id', userId); } else { await supabase .from('admin_roles') .upsert({ user_id: userId, role, updated_at: new Date().toISOString() }); } toast({ title: 'Success', description: 'User role updated successfully', }); loadAdminData(); } catch (error) { if (import.meta.env.DEV) console.error('Error updating role:', error); toast({ title: 'Error', description: 'Failed to update user role', variant: 'destructive', }); } }; const sendNotification = async (userId: string) => { const title = prompt('Notification Title:'); const message = prompt('Notification Message:'); if (!title || !message) return; try { const { error } = await supabase.functions.invoke('notifications-manager', { body: { action: 'create', userId, title, message, type: 'info' } }); if (error) throw error; toast({ title: 'Success', description: 'Notification sent successfully', }); } catch (error) { if (import.meta.env.DEV) console.error('Error sending notification:', error); toast({ title: 'Error', description: 'Failed to send notification', variant: 'destructive', }); } }; const getUserRole = (userId: string) => { const role = adminRoles.find(r => r.user_id === userId); return role?.role || 'none'; }; if (loading) { return
Loading...
; } return (

Admin Panel

Commission
Setup
KYC
Approvals
Commission
Voting
Users Roles Sessions Permissions Security Activity Settings
User Management Username Email Verified Role Actions {users.map((user) => ( {user.username} {user.email} {user.email_verified ? 'Verified' : 'Unverified'} ))}
Admin Roles
{adminRoles.map((role) => { const user = users.find(u => u.id === role.user_id); return (

{user?.username}

{user?.email}

{role.role}
); })}
Recent Activity

Activity logs will be displayed here

System Settings
); }