'use client'; import { AuthGuard } from '@/components/AuthGuard'; import { DashboardLayout } from '@/components/DashboardLayout'; import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { mailAccountsApi, MailAccount } from '@/lib/api'; import { Plus, Edit2, Trash2, CheckCircle, XCircle, AlertTriangle, Power } from 'lucide-react'; import { useState } from 'react'; import { AddMailAccountModal } from '@/components/AddMailAccountModal'; export default function AccountsPage() { const [isModalOpen, setIsModalOpen] = useState(false); const [editingAccount, setEditingAccount] = useState(null); const queryClient = useQueryClient(); const { data: accounts, isLoading } = useQuery({ queryKey: ['mail-accounts'], queryFn: mailAccountsApi.list, }); const deleteMutation = useMutation({ mutationFn: mailAccountsApi.delete, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['mail-accounts'] }); }, }); const toggleMutation = useMutation({ mutationFn: mailAccountsApi.toggle, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['mail-accounts'] }); }, }); const handleEdit = (account: MailAccount) => { setEditingAccount(account); setIsModalOpen(true); }; const handleDelete = async (id: number) => { if (confirm('Are you sure you want to delete this mail account?')) { try { await deleteMutation.mutateAsync(id); } catch { alert('Failed to delete account'); } } }; const handleToggle = async (id: number) => { try { await toggleMutation.mutateAsync(id); } catch { alert('Failed to update account'); } }; const handleCloseModal = () => { setIsModalOpen(false); setEditingAccount(null); }; return (

Mail Accounts

{isLoading ? (
) : accounts && accounts.length > 0 ? (
{accounts.map((account) => (

{account.name}

{account.email_address}

{account.is_enabled ? ( Enabled ) : ( Disabled )}
Protocol: {account.protocol.toUpperCase()}
Host: {account.host}:{account.port}
SSL: {account.use_ssl ? 'Yes' : 'No'}
Interval: Every {account.check_interval_minutes} min
{account.last_check_at && (
Last checked: {new Date(account.last_check_at).toLocaleString()}
)} {account.last_error_message && (

{account.last_error_message}

)}
))}
) : (

No mail accounts configured yet

)}
{isModalOpen && ( )}
); }