falcon

Listen for postMessage from parent, log to console, enter it into the chat input, and submit

// ==UserScript==
// @name         falcon
// @description  Listen for postMessage from parent, log to console, enter it into the chat input, and submit
// @match        https://chat.falconllm.tii.ae/*
// @version 0.0.1.20250802221446
// @namespace https://greasyfork.org/users/1435046
// ==/UserScript==

(function () {
  'use strict';

  window.addEventListener("message", (event) => {

    if (event.data && event.data.type === 'newChatButtonClicked') {
      // Click the "New Chat" button
      const newChatButton = document.querySelector('button#new-chat-button');
      if (newChatButton) newChatButton.click();
      return;
    }

    let chatMessageInput = document.querySelector('div:has(> div > div > div > div > form > div > div> div > div > #chat-input)');
    let header = document.querySelector('div.sticky:has(> div > div > div > div > div > div > div > button[id="model-selector-0-button"])');
    //if event data type is defaultChatMessageInputDisplay
    if (event.data?.type === 'defaultChatMessageInputDisplay') {
      console.log('default');
      if (chatMessageInput) {

        chatMessageInput.style.removeProperty('display');
        header.style.removeProperty('display');


        //return
        return;
      }
    }

    if (event.data?.type === 'customizeChatMessageInputDisplay') {
      console.log('customize');
      if (chatMessageInput) {

        chatMessageInput.style.display = 'none';
        header.style.display = 'none';


        //return
        return;
      }
    }

    if (event.data?.type === "prompt") {
      const input = document.getElementById("chat-input");
      const button = document.getElementById("send-message-button");

      input.innerText = event.data.content;

      const observer = new MutationObserver(() => {
        if (!button.hasAttribute("disabled")) {
          button.click();
          observer.disconnect(); // stop observing once clicked
        }
      });

      observer.observe(button, { attributes: true, attributeFilter: ["disabled"] });
    }
  });
})();