function submitMessageHandler()

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
}