import { notFound } from "next/navigation" import type { Metadata } from "next" import { after } from "next/server" import { getTranslations } from "next-intl/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 async function generateMetadata(): Promise { const t = await getTranslations("messages") return { title: t("title.detail") } } export default async function MessageDetailPage({ params, }: { params: Promise<{ id: string }> }): Promise { 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 (
) }