"use client"; import { useEffect, useState } from "react"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { RefreshCw, Mail } from "lucide-react"; import { useRouter } from "next/navigation"; import { useSession } from "next-auth/react"; interface Email { id: string; subject: string; from: string; fromName: string; date: string; read: boolean; starred: boolean; hasAttachments: boolean; } export function CourrierWidget() { const [emails, setEmails] = useState([]); const [error, setError] = useState(null); const [loading, setLoading] = useState(true); const [refreshing, setRefreshing] = useState(false); const router = useRouter(); const { status } = useSession(); const fetchEmails = async (isRefresh = false) => { try { if (isRefresh) { setRefreshing(true); } const response = await fetch('/api/courrier'); if (!response.ok) { throw new Error('Failed to fetch emails'); } const data = await response.json(); if (Array.isArray(data.emails)) { setEmails(data.emails.slice(0, 5)); } else { console.warn('Unexpected data format:', data); setEmails([]); } setError(null); } catch (err) { console.error('Error fetching emails:', err); const errorMessage = err instanceof Error ? err.message : 'Failed to fetch emails'; setError(errorMessage); } finally { setLoading(false); setRefreshing(false); } }; useEffect(() => { if (status === 'authenticated') { fetchEmails(); } }, [status]); const formatDate = (dateString: string) => { const date = new Date(dateString); const now = new Date(); const diff = now.getTime() - date.getTime(); const days = Math.floor(diff / (1000 * 60 * 60 * 24)); if (days === 0) { return date.toLocaleTimeString('fr-FR', { hour: '2-digit', minute: '2-digit' }); } else if (days === 1) { return 'Hier'; } else if (days < 7) { return date.toLocaleDateString('fr-FR', { weekday: 'long' }); } else { return date.toLocaleDateString('fr-FR', { day: '2-digit', month: '2-digit', year: '2-digit' }); } }; return ( router.push('/courrier')} > Courrier {loading ? (
) : error ? (
{error}
) : emails.length === 0 ? (
No emails found
) : (
{emails.map((email) => (
{formatDate(email.date)}

{email.subject}

{email.fromName}

))}
)} ); }