in gemini/mcp/adk_multiagent_mcp_app/static/websocketApp.js [241:289]
function submitMessageHandler(e) {
e.preventDefault(); // Prevent page reload
if (!ws || ws.readyState !== WebSocket.OPEN) {
console.warn("Attempted send, but WebSocket is not open.");
addStatusMessage(
"Cannot send message - Connection not active.",
"error-text",
);
return false;
}
if (!messageInput) {
console.error("Cannot send message: messageInput is missing.");
return false;
}
const messageText = messageInput.value.trim();
if (messageText) {
addMessageToUI(messageText, "user");
showThinkingIndicator();
try {
console.log("Sending message:", messageText);
ws.send(messageText); // Send raw text
messageInput.value = ""; // Clear input
messageInput.focus();
} catch (error) {
console.error("Error sending message via WebSocket:", error);
hideThinkingIndicator();
addStatusMessage(
`Failed to send message: ${error.message}`,
"error-text",
);
// Add visual feedback to the failed user message
const lastUserBubble = messagesDiv?.querySelector(
".message-wrapper.user:last-child .message-bubble",
);
if (lastUserBubble) {
const errorSpan = document.createElement("span");
errorSpan.textContent = " (Send Error)";
errorSpan.style.color = "var(--status-error, #dc3545)"; // Use CSS var or fallback
errorSpan.style.fontSize = "0.8em";
lastUserBubble.appendChild(errorSpan);
}
}
} else {
console.log("Empty message submission ignored.");
}
return false; // Prevent default just in case
}