export function createMessageElement(message, formatTimestamp) { const messageDiv = document.createElement('div'); let messageClass = 'chat-bubble'; if (message.type === 'system') { messageClass += ' message-system'; } else if (message.isSelf) { messageClass += ' message-self'; } else { messageClass += ' message-other'; } messageDiv.className = messageClass; messageDiv.dataset.messageId = message.id; const contentHTML = message.type === 'file' && message.content.startsWith('data:image/') ? `
${message.fileName || '\u56fe\u7247'} ${message.fileName ? `
${message.fileName}
` : ''}
` : `
${message.content}
`; messageDiv.innerHTML = `
${message.senderName} ${formatTimestamp(message.timestamp)}
${contentHTML}
`; return messageDiv; } export function renderChatMessagesInto(container, messages, formatTimestamp) { if (!container) return; container.innerHTML = ''; const startTimeElement = document.createElement('div'); startTimeElement.className = 'text-center text-xs text-gray-500 my-4'; const startTime = messages[0]?.timestamp || new Date().toISOString(); startTimeElement.textContent = `\u901a\u8bdd\u5f00\u59cb ${formatTimestamp(startTime)}`; container.appendChild(startTimeElement); messages.forEach(message => { container.appendChild(createMessageElement(message, formatTimestamp)); }); container.scrollTop = container.scrollHeight; }