'use client'; import { useState, useEffect } from 'react'; import { useSearchParams } from 'next/navigation'; import Link from 'next/link'; import { AppHeader } from '@/components/layout/AppHeader'; import { Sidebar } from '@/components/layout/Sidebar'; import { Breadcrumb } from '@/components/layout/Breadcrumb'; import { DetailSkeleton } from '@/components/ui/Skeleton'; export default function EmailDetail() { const searchParams = useSearchParams(); const bucket = searchParams.get('bucket'); const key = searchParams.get('key'); const mailbox = searchParams.get('mailbox'); const [email, setEmail] = useState({ subject: '', from: '', to: '', html: '', raw: '', processed: '', processedAt: null as string | null, processedBy: null as string | null, queuedTo: null as string | null, status: null as string | null, }); const [viewMode, setViewMode] = useState('html'); const [error, setError] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { if (!bucket || !key) { setError('Missing parameters'); setLoading(false); return; } const auth = localStorage.getItem('auth'); if (!auth) { setError('Not authenticated'); setLoading(false); return; } fetch(`/api/email?bucket=${bucket}&key=${key}`, { headers: { Authorization: `Basic ${auth}` } }) .then(res => { if (!res.ok) throw new Error('Failed to fetch email'); return res.json(); }) .then(setEmail) .catch(err => setError(err.message)) .finally(() => setLoading(false)); }, [bucket, key]); if (loading) { return ( <>
); } if (error) { return ( <>

{error}

); } const formatDate = (dateStr: string | null) => { if (!dateStr) return 'N/A'; const date = new Date(dateStr); return date.toLocaleString('en-US', { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false }); }; return ( <>
{/* Email Header */}

{email.subject}

Zurück zur Liste
{email.status && ( {email.status === 'delivered' && ( )} {email.status === 'failed' && ( )} {email.status.charAt(0).toUpperCase() + email.status.slice(1)} )}
{/* Email Meta Info */}
{email.from ? email.from.charAt(0).toUpperCase() : 'U'}
{email.from || 'Unknown Sender'}
to {email.to || 'Unknown'}
{/* Technical Details (Collapsible) */}
Technische Details anzeigen

From: {email.from}

To: {email.to}

S3 Key: {key}

Processed: {email.processed === 'true' ? 'Yes' : 'No'}

Processed At: {formatDate(email.processedAt)}

Processed By: {email.processedBy || 'N/A'}

Queued To: {email.queuedTo || 'N/A'}

Status: {email.status ? ( {email.status} ) : 'N/A'}

{viewMode === 'html' ? ( <>
Displaying HTML content from email
) : (
{email.raw}
)}
); }