Update conversations.php

This commit is contained in:
Lizandro Guarnizo
2026-01-23 23:11:03 -05:00
parent a590882063
commit de35d5a7dd
+48 -29
View File
@@ -1685,6 +1685,20 @@
container.scrollTop = container.scrollHeight; container.scrollTop = container.scrollHeight;
} }
// Insertar mensaje saliente en la vista inmediatamente (simular envío)
addMessageToView(content, type = 'outgoing') {
const msg = {
message_id: 'local_' + Date.now(),
direction: type === 'outgoing' ? 'outgoing' : 'incoming',
content: content,
created_at: new Date().toISOString(),
status: 'sent'
};
this.conversations.push(msg);
this.renderconversations();
this.scrollToBottom();
}
async sendMessage() { async sendMessage() {
const input = document.getElementById('message-input'); const input = document.getElementById('message-input');
const message = input.value.trim(); const message = input.value.trim();
@@ -1714,42 +1728,47 @@
return; return;
} }
// send template // send template via helper (match chat_window format)
const resp = await apiCall('send_message.php', { body: { recipient, type: 'template', template_name: template, language: (document.getElementById('templateSelect').selectedOptions[0] ? document.getElementById('templateSelect').selectedOptions[0].dataset.language : 'es') } }); const templateName = template;
if (resp && resp.success) { const language = (document.getElementById('templateSelect').selectedOptions[0] ? document.getElementById('templateSelect').selectedOptions[0].dataset.language : 'es');
showAlert && showAlert('Plantilla enviada', 'success'); await this.sendTemplateMessage(templateName, language, null);
await this.loadconversations(this.currentUserId, false);
await this.loadConversations();
} else { } else {
throw new Error(resp && resp.error ? resp.error : 'Error enviando plantilla'); // send text message using recipient (phone number) to match chat_window behavior
const recipient = this.getConversationPhone(this.currentUserId);
if (!recipient) {
alert('No se pudo determinar el número de destino');
console.error('sendMessage(text): missing recipient for user', this.currentUserId);
return;
} }
} else {
const response = await fetch('api/send_message.php', { // prepare request body similar to chat_window
method: 'POST', const requestBody = {
headers: { recipient: recipient,
'Content-Type': 'application/json', type: 'text',
}, message: message
body: JSON.stringify({ };
user_id: this.currentUserId, if (replyTo) requestBody.reply_to = replyTo;
message: message,
reply_to: replyTo try {
}) const result = await this.apiCall('send_message.php', { body: requestBody });
});
// Clear reply data attribute // Clear reply data attribute
input.dataset.replyTo = null; input.dataset.replyTo = null;
const result = await response.json(); if (result && result.success) {
if (result.success) {
input.value = ''; input.value = '';
// Recargar mensajes // Mostrar inmediatamente en la vista
await this.loadconversations(this.currentUserId, false); this.addMessageToView(message, 'outgoing');
// Actualizar lista de conversaciones showAlert && showAlert('Mensaje enviado correctamente', 'success');
this.loadConversations(); // Recargar mensajes y conversaciones en background
// Actualizar respuestas rápidas this.loadconversations(this.currentUserId, false).catch(e=>console.warn(e));
await this.loadQuickReplies(); this.loadConversations().catch(e=>console.warn(e));
this.loadQuickReplies().catch(e=>console.warn(e));
} else { } else {
alert('Error al enviar mensaje: ' + (result.error || 'Error desconocido')); throw new Error(result && result.error ? result.error : 'Error desconocido');
}
} catch (err) {
console.error('Error sending text message', err);
alert('Error al enviar mensaje: ' + (err.message || err));
} }
} }
} catch (error) { } catch (error) {