'use client' import { useState } from 'react' import ChatImagePreviewModal from '@/app/(dashboard)/chat-oversight/[id]/_components/ChatImagePreviewModal' import Button from '@/components/formElements/Button' import { formatPersonName } from '@/helpers' import { cn } from '@/lib/cn' import { formatIranianMobile, formatPersianDate } from '@/lib/formatters' import { resolveUserAvatarSrc } from '@/lib/resolveUserAvatarSrc' import type { AdminChatMessage } from '@/services/adminChat' interface AdminMessageBubbleProps { message: AdminChatMessage side: 'primary' | 'secondary' showAvatar: boolean showSenderName: boolean isClusterStart: boolean isClusterEnd: boolean } const formatTime = (value: string) => formatPersianDate(value, { hour: '2-digit', minute: '2-digit', }) const AdminMessageBubble = ({ message, side, showAvatar, showSenderName, isClusterStart, isClusterEnd }: AdminMessageBubbleProps) => { const [previewImageUrl, setPreviewImageUrl] = useState(null) const isPrimary = side === 'primary' const senderName = formatPersonName(message.senderFirstName, message.senderLastName, 'کاربر') const senderMeta = message.senderMobile ? formatIranianMobile(message.senderMobile) : message.senderId const avatarSrc = resolveUserAvatarSrc({ avatarUrl: message.senderAvatarUrl, gender: message.senderGender, }) return (
{showAvatar ? (
{/* eslint-disable-next-line @next/next/no-img-element */}
) : ( )}
{showSenderName ? (

{senderName}

{senderMeta}

) : null} {message.body ?

{message.body}

: null} {message.imageUrl ? ( ) : null}
{formatTime(message.createdAt)}
{ if (!open) setPreviewImageUrl(null) }} />
) } export default AdminMessageBubble