document.addEventListener('DOMContentLoaded', function() { // Event listener to handle button click var sendUrlButton = document.getElementById('sendUrlButton'); var loadingModal = document.getElementById('loadingModal'); var copyButton = document.getElementById('copyButton'); if (sendUrlButton) { sendUrlButton.addEventListener('click', sendUrlContentToBackend); } else { console.error('Element with id "sendUrlButton" not found.'); } // Event listener for copy button if (copyButton) { copyButton.addEventListener('click', copyToClipboard); } else { console.error('Element with id "copyButton" not found.'); } // Function to send current tab content to backend server function sendUrlContentToBackend() { chrome.tabs.query({ active: true, currentWindow: true }, function(tabs) { var currentTab = tabs[0]; var currentTabUrl = currentTab.url; chrome.scripting.executeScript({ target: { tabId: currentTab.id }, func: extractTextFromPage, args: [] }, function(results) { var content = results[0].result; var requestData = { url: currentTabUrl, html_content: content.html, js_content: content.js }; // Display loading indicator loadingModal.style.display = 'block'; console.log('Sending data to server:', requestData); // Send data to server using fetch API fetch('https://taboverviewai.onrender.com/generate_summary', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(requestData) }) .then(response => { if (!response.ok) { throw new Error('Network response was not ok'); } return response.json(); }) .then(data => { console.log('Response from server:', data); var outputDiv = document.getElementById('output'); outputDiv.innerHTML = formatResponseText(data.ai_response); document.getElementById("sendUrlButton").textContent = "ReGenerate"; document.getElementById('copyButton').disabled = false; document.body.classList.add('top'); }) .catch(error => { console.error('Error sending URL content to server:', error); }) .finally(() => { // Hide loading indicator loadingModal.style.display = 'none'; }); }); }); } function extractTextFromPage() { function extractText(node) { let text = ''; if (node.nodeType === Node.TEXT_NODE) { text += node.textContent.trim() + ' '; } else if (node.nodeType === Node.ELEMENT_NODE) { if (node.tagName === 'P' || node.tagName === 'SPAN' || node.tagName.match(/^H[1-6]$/)) { text += node.textContent.trim() + ' '; } } return text; } var htmlContent = ''; var nodes = document.body.querySelectorAll('p, span, h1, h2, h3, h4, h5, h6'); nodes.forEach(node => { htmlContent += extractText(node); }); var scriptContent = Array.from(document.getElementsByTagName('script')).map(s => extractText(s)).join(' '); return { html: htmlContent, js: scriptContent }; } // Function to format response text function formatResponseText(text) { text = text.replace(/\*\*(.*?)\*\*/g, '
$1'); text = text.replace(/\*/g, ''); text = text.replace(/\*\*(.*?)\*\*/g, '$1'); return text; } // Copy to clipboard function function copyToClipboard() { var outputText = document.getElementById('output').textContent; navigator.clipboard.writeText(outputText) console.log("Showing copied message"); // Debugging line var message = document.createElement('div'); message.className = 'copied-message'; message.textContent = 'Copied'; document.body.appendChild(message); setTimeout(function() { message.remove(); }, 2000); } // Event listener for signin link var signinLink = document.getElementById('signinLink'); if (signinLink) { signinLink.addEventListener('click', function(event) { event.preventDefault(); document.getElementById('signinModal').style.display = 'block'; }); } // Function to close the signin modal function closeSigninModal() { document.getElementById('signinModal').style.display = 'none'; } });