console.log("contentscript.js started!"); // function handleReceivedMessage(message) { // log received message console.log(`contentscript.js received a message with content ${message}`); // execute script regardless of message content const urlsAndFilenames = extractUrlsAndFilenames(); clickPrintButton(); console.log(`contentscript.js: URLs and filenames extracted -> ${JSON.stringify(urlsAndFilenames)}`); // return data as the resolved Promise's payload return Promise.resolve({ urlsAndFilenames: urlsAndFilenames }); }; // extract URL and filename for each mail attachment function extractUrlsAndFilenames() { console.log("contentscript.js: this is extractFileUrlsAndNames()"); // get the correct frame let frame = document.querySelector("iframe.js-mail-content"); // get all divs containing attachments let divs = frame.contentWindow.document.body.querySelectorAll("div.samoware-mail-message__attach__item[attachment-ref]"); // loop over divs and extract attachment information let urlsAndFilenames = []; divs.forEach((div) => { let url = div.getAttribute("attachment-ref"); let filename = div.getAttribute("file-name"); // if filename is null, derive it from url if (!filename) { let splitUrl = url.split("/"); filename = splitUrl[splitUrl.length - 1]; } urlsAndFilenames.push({ url: url, filename: filename }); }); return urlsAndFilenames; } // trigger a click event on samoware's print button function clickPrintButton() { let printElement = document.querySelector('li[ng-click="printMessage(selectedMessage)"]'); printElement.click(); } browser.runtime.onMessage.addListener(handleReceivedMessage);