import Link from "next/link"; import { notFound } from "next/navigation"; import { SendMessageForm } from "@/components/dashboard-actions"; import { PanelShell } from "@/components/panel-shell"; import { getCaregiverDeviceDetail } from "@/lib/caregiver-panel"; import { formatDateTime, getConversationRoleLabel, getDeviceName, getImportanceLabel, getMessageHref, getUsageLabel, truncateText, } from "@/lib/panel-format"; import { requireCaregiverSession } from "@/lib/page-auth"; export const dynamic = "force-dynamic"; type DeviceDetailPageProps = { params: Promise<{ deviceUuid: string }>; }; export default async function DeviceDetailPage({ params }: DeviceDetailPageProps) { const { deviceUuid } = await params; const caregiver = await requireCaregiverSession(`/devices/${deviceUuid}`); const binding = await getCaregiverDeviceDetail(caregiver.id, deviceUuid); if (!binding) { notFound(); } const elderMessages = binding.elderDevice.messages.filter( (message) => message.direction === "ELDER_TO_FAMILY", ); const familyMessages = binding.elderDevice.messages.filter( (message) => message.direction === "FAMILY_TO_ELDER", ); return (

新留言

{binding.elderUnreadCount}

待查看

{binding.familyUnreadCount}

最近在线

{formatDateTime(binding.elderDevice.lastSeenAt)}

设备链接

{truncateText(binding.bindUrl, 52)}

长辈的话

最近收到的留言

全部留言
{elderMessages.length === 0 ? (

还没有收到长辈的留言。

) : ( elderMessages.map((message) => (
#{message.publicId} {getImportanceLabel(message.importance)} {formatDateTime(message.createdAt)}

{truncateText(message.content, 112)}

)) )}

最近活动

最近的使用情况

{binding.elderDevice.usageEvents.length === 0 ? (

暂时还没有使用记录。

) : ( binding.elderDevice.usageEvents.map((event) => (
{getUsageLabel(event.eventType)} {formatDateTime(event.createdAt)}
)) )}

我的问候

已发出的留言

{familyMessages.length === 0 ? (

还没有给这位长辈写过留言。

) : ( familyMessages.map((message) => (
#{message.publicId} {getImportanceLabel(message.importance)} {formatDateTime(message.createdAt)}

{truncateText(message.content, 112)}

)) )}

最近对话片段

最近的聊天记录

{binding.elderDevice.conversationTurns.length === 0 ? (

还没有聊天记录。

) : ( binding.elderDevice.conversationTurns.map((turn) => (
{getConversationRoleLabel(turn.role)} {formatDateTime(turn.createdAt)}

{truncateText(turn.content, 124)}

)) )}
); }