import { notFound } from "next/navigation" import { after } from "next/server" import { requirePermission } from "@/shared/lib/auth-guard" import { Permissions } from "@/shared/types/permissions" import { getMessageById, markMessageAsRead } from "@/modules/messaging/data-access" import { MessageDetail } from "@/modules/messaging/components/message-detail" export const dynamic = "force-dynamic" export const metadata = { title: "Message Detail", } export default async function MessageDetailPage({ params, }: { params: Promise<{ id: string }> }) { const ctx = await requirePermission(Permissions.MESSAGE_READ) const { id } = await params const message = await getMessageById(id, ctx.userId) if (!message) notFound() // Auto-mark as read when viewed by the receiver (non-blocking) if (!message.isRead && message.receiverId === ctx.userId) { after(() => markMessageAsRead(id, ctx.userId)) } return (
) }