samoware-multisave/contentscript.js

48 lines
1.7 KiB
JavaScript

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);