From 7da2a0e46fe4050e62ff0de387a67af401f4cb75 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Sat, 24 Jan 2026 01:09:00 -0500 Subject: [PATCH] up --- api/react_message.php | 73 +++++++++++++++++++++++++++++++++++++++++++ conversations.php | 6 +--- 2 files changed, 74 insertions(+), 5 deletions(-) create mode 100644 api/react_message.php diff --git a/api/react_message.php b/api/react_message.php new file mode 100644 index 0000000..caec598 --- /dev/null +++ b/api/react_message.php @@ -0,0 +1,73 @@ + false, 'error' => 'Parámetros faltantes: message_id, emoji']); + exit; +} + +try { + $db = Database::getInstance(); + + // Buscar mensaje objetivo para obtener user_id + $stmt = $db->query("SELECT id, user_id, message_id, direction FROM conversations WHERE message_id = ? OR id = ? LIMIT 1", [$message_id, $message_id]); + $target = $stmt->fetch(); + if (!$target) { + http_response_code(404); + echo json_encode(['success' => false, 'error' => 'Mensaje objetivo no encontrado']); + exit; + } + + // Obtener teléfono del usuario + $user = $db->query("SELECT phone_number FROM users WHERE id = ? LIMIT 1", [$target['user_id']])->fetch(); + if (!$user || empty($user['phone_number'])) { + http_response_code(500); + echo json_encode(['success' => false, 'error' => 'No se pudo determinar el teléfono del usuario']); + exit; + } + + // Enviar reacción a través de WhatsAppService + $wa = new WhatsAppService(); + $to = $user['phone_number']; + $resp = null; + try { + $resp = $wa->sendReaction($to, $message_id, $emoji, false); + } catch (Exception $e) { + // fallar la operación de envío pero seguir guardando registro con status "failed" + error_log('sendReaction failed: ' . $e->getMessage()); + } + + // Registrar la reacción como mensaje saliente en la BD + $msgData = [ + 'user_id' => $target['user_id'], + 'direction' => 'outgoing', + 'message_type' => 'reaction', + 'content' => $emoji, + 'reaction_to_message_id' => $message_id, + 'reaction_emoji' => $emoji, + 'status' => ($resp ? 'sent' : 'failed'), + 'created_at' => date('Y-m-d H:i:s') + ]; + + // If we got an id from WhatsApp response, save it + if (is_array($resp) && isset($resp['conversations'][0]['id'])) { + $msgData['message_id'] = $resp['conversations'][0]['id']; + } + + $db->insert('conversations', $msgData); + + echo json_encode(['success' => true, 'message' => 'Reacción enviada', 'saved' => $msgData]); +} catch (Exception $e) { + http_response_code(500); + echo json_encode(['success' => false, 'error' => $e->getMessage()]); +} diff --git a/conversations.php b/conversations.php index d334549..00b39c3 100644 --- a/conversations.php +++ b/conversations.php @@ -1221,6 +1221,7 @@ typeSelect.addEventListener('change', (e) => { const tplContainer = document.getElementById('templateSelectContainer'); tplContainer.style.display = (e.target.value === 'template') ? 'inline-block' : 'none'; + if (typeof updateSendMicVisibility === 'function') updateSendMicVisibility(); }); } @@ -1289,11 +1290,6 @@ // Expose small helper to other methods this._updateSendMicVisibility = updateSendMicVisibility; - const tplContainer = document.getElementById('templateSelectContainer'); - tplContainer.style.display = (e.target.value === 'template') ? 'inline-block' : 'none'; - updateSendMicVisibility(); - }); - } // File input selected -> show send button const fileInput = document.getElementById('file-input');