'use client'; import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { sessionService } from '@/lib/services/session.service'; import { Button } from '@/components/ui/button'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table'; import { toast } from 'sonner'; import { Loader2, Trash2, Monitor, Smartphone } from 'lucide-react'; import { format } from 'date-fns'; export default function SessionManagementPage() { const queryClient = useQueryClient(); const { data: sessions, isLoading, error, } = useQuery({ queryKey: ['sessions'], queryFn: sessionService.getActiveSessions, }); const revokeMutation = useMutation({ mutationFn: sessionService.revokeSession, onSuccess: () => { toast.success('Session revoked successfully'); queryClient.invalidateQueries({ queryKey: ['sessions'] }); }, onError: (error) => { toast.error('Failed to revoke session'); console.error(error); }, }); const handleRevoke = (id: number) => { if (confirm('Are you sure you want to revoke this session?')) { revokeMutation.mutate(id); } }; if (isLoading) { return (
Monitor and manage active user sessions across all devices.