From 9151e4efa09f30004d30f64e52c362aeab26c2c7 Mon Sep 17 00:00:00 2001 From: Maciej Pienczyn Date: Sat, 28 Mar 2026 16:29:15 +0100 Subject: [PATCH] debug: add deep logging to message send flow (frontend + backend) --- blueprints/messages/message_routes.py | 2 ++ static/js/conversations.js | 19 +++++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/blueprints/messages/message_routes.py b/blueprints/messages/message_routes.py index 7fef6c9..ef76001 100644 --- a/blueprints/messages/message_routes.py +++ b/blueprints/messages/message_routes.py @@ -183,6 +183,8 @@ def get_messages(conv_id): @member_required def send_message(conv_id): """Send a message to a conversation.""" + import logging + logging.getLogger(__name__).info(f"[MSG-DEBUG] send_message called: conv={conv_id}, user={current_user.id}, method={request.method}") db = SessionLocal() try: # Verify membership diff --git a/static/js/conversations.js b/static/js/conversations.js index c278b42..f81c6d1 100644 --- a/static/js/conversations.js +++ b/static/js/conversations.js @@ -1211,6 +1211,7 @@ if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); e.stopImmediatePropagation(); + console.log('[MSG-DEBUG] Enter keydown captured, _isSending=' + state._isSending + ', _lastSendTime=' + state._lastSendTime); Composer.send(); } }, true); @@ -1224,6 +1225,7 @@ var sendBtn = document.getElementById('sendBtn'); if (sendBtn) { sendBtn.addEventListener('click', function () { + console.log('[MSG-DEBUG] Send BUTTON clicked'); Composer.send(); }); } @@ -1254,14 +1256,23 @@ send: async function () { if (!state.currentConversationId || !state.quill) return; - if (state._isSending) return; // Prevent double send + // Double-send guard: flag + timestamp debounce (500ms) + var now = Date.now(); + if (state._isSending || (state._lastSendTime && now - state._lastSendTime < 500)) { + console.log('[MSG-DEBUG] send() BLOCKED: _isSending=' + state._isSending + ', timeSinceLast=' + (now - (state._lastSendTime || 0)) + 'ms'); + return; + } + state._isSending = true; + state._lastSendTime = now; + console.log('[MSG-DEBUG] send() EXECUTING at ' + now); var html = state.quill.root.innerHTML; var text = state.quill.getText().trim(); - if (!text && !state.attachedFiles.length) return; - - state._isSending = true; + if (!text && !state.attachedFiles.length) { + state._isSending = false; + return; + } var convId = state.currentConversationId; try {