ThunderAI/js/mzta-compose-script.js

69 lines
No EOL
2 KiB
JavaScript

/*
* ThunderAI [https://micz.it/thunderdbird-addon-thunderai/]
* Copyright (C) 2024 Mic (m@micz.it)
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
browser.runtime.onMessage.addListener(async (message) => {
switch (message.command) {
case "getSelectedText":
return Promise.resolve(window.getSelection().toString());
case "replaceSelectedText": // TODO
const selectedText = window.getSelection().toString();
if (selectedText === '') {
let fullBody = insert(message.text);
await browser.compose.setComposeDetails(message.tabId, {body: fullBody.body.innerHTML});
}
const sel = window.getSelection();
if (!sel || sel.type !== "Range" || !sel.rangeCount) {
return;
}
const r = sel.getRangeAt(0);
r.deleteContents();
makeParagraphs(message.text, function (p) {
r.insertNode(p);
});
break;
case "getText":
let t = '';
const children = window.document.body.childNodes;
for (const node of children) {
if (node instanceof Element) {
if (node.classList.contains('moz-signature')) {
continue;
}
}
t += node.textContent;
}
return Promise.resolve(t);
case "getTextOnly":
return Promise.resolve(window.document.body.innerText);
case 'promptTooLong':
alert(browser.i18n.getMessage('msg_prompt_too_long'));
break;
case 'sendAlert':
alert(message.message);
break;
default:
// do nothing
break;
}
});