import { DOMAINS, MESSAGE_TYPES } from "../../utils/constants" import { DOMUtils } from "../../utils/ui-components" import { initializeChatGPT } from "./chatgpt" import { initializeClaude } from "./claude" import { saveMemory, setupGlobalKeyboardShortcut, setupStorageListener } from "./shared" import { initializeT3 } from "./t3" import { handleTwitterNavigation, initializeTwitter, updateTwitterImportUI } from "./twitter" export default defineContentScript({ matches: [""], main() { // Setup global event listeners browser.runtime.onMessage.addListener(async (message) => { if (message.action === MESSAGE_TYPES.SHOW_TOAST) { DOMUtils.showToast(message.state) } else if (message.action === MESSAGE_TYPES.SAVE_MEMORY) { await saveMemory() } else if (message.type === MESSAGE_TYPES.IMPORT_UPDATE) { updateTwitterImportUI(message) } else if (message.type === MESSAGE_TYPES.IMPORT_DONE) { updateTwitterImportUI(message) } }) // Setup global keyboard shortcuts setupGlobalKeyboardShortcut() // Setup storage listener setupStorageListener() // Observer for dynamic content changes const observeForDynamicChanges = () => { const observer = new MutationObserver(() => { if (DOMUtils.isOnDomain(DOMAINS.CHATGPT)) { initializeChatGPT() } if (DOMUtils.isOnDomain(DOMAINS.CLAUDE)) { initializeClaude() } if (DOMUtils.isOnDomain(DOMAINS.T3)) { initializeT3() } if (DOMUtils.isOnDomain(DOMAINS.TWITTER)) { handleTwitterNavigation() } }) observer.observe(document.body, { childList: true, subtree: true, }) } // Initialize platform-specific functionality initializeChatGPT() initializeClaude() initializeT3() initializeTwitter() // Start observing for dynamic changes if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", observeForDynamicChanges) } else { observeForDynamicChanges() } }, })