import { useEffect, useState } from "react"; import { Link, useParams } from "react-router-dom"; import { api } from "../api.js"; function formatDate(value) { if (!value) return ""; const parsed = new Date(value); if (Number.isNaN(parsed.getTime())) return value; return parsed.toLocaleString(); } export default function Message() { const { id } = useParams(); const [message, setMessage] = useState(null); const [error, setError] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { let cancelled = false; setLoading(true); setError(null); api(`/api/messages/${encodeURIComponent(id)}`) .then((data) => { if (!cancelled) setMessage(data); }) .catch((err) => { if (!cancelled) setError(err.message); }) .finally(() => { if (!cancelled) setLoading(false); }); return () => { cancelled = true; }; }, [id]); return (
← Inbox {loading ? (
) : error ? (
{error}
) : message ? (

{message.subject}

From
{message.from}
{message.to ? (
To
{message.to}
) : null}
Date
{formatDate(message.date)}
{message.body || message.snippet || "(empty message)"}
) : null}
); }