parent
c624908044
commit
87d5b332bb
1 changed files with 47 additions and 1 deletions
|
|
@ -59,3 +59,49 @@ function extractEmail(text) {
|
||||||
const match = text.match(emailRegex);
|
const match = text.match(emailRegex);
|
||||||
return match ? match[0] : '';
|
return match ? match[0] : '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function replaceBody(tabId, text){
|
||||||
|
let composeDetails = await messenger.compose.getComposeDetails(tabId);
|
||||||
|
let originalHtmlBody = composeDetails.body;
|
||||||
|
console.log('originalHtmlBody: ' + originalHtmlBody);
|
||||||
|
let fullBody = insertText(text, originalHtmlBody);
|
||||||
|
console.log('fullBody: ' + fullBody);
|
||||||
|
await messenger.compose.setComposeDetails(tabId, {body: fullBody});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// The following methods are a modified version derived from https://github.com/ali-raheem/Aify/blob/13ff87583bc520fb80f555ab90a90c5c9df797a7/plugin/content_scripts/compose.js
|
||||||
|
|
||||||
|
const insertText = function (text, fullBody_string) {
|
||||||
|
const parser = new DOMParser();
|
||||||
|
let fullBody = parser.parseFromString(fullBody_string, "text/html");
|
||||||
|
const prefix = fullBody.getElementsByClassName("moz-cite-prefix");
|
||||||
|
if (prefix.length > 0) {
|
||||||
|
const divider = prefix[0];
|
||||||
|
let sibling = divider.previousSibling;
|
||||||
|
while (sibling) {
|
||||||
|
fullBody.body.removeChild(sibling);
|
||||||
|
sibling = divider.previousSibling;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
makeParagraphs(text, function (p) {
|
||||||
|
fullBody.body.insertBefore(p, fullBody.body.firstChild);
|
||||||
|
});
|
||||||
|
return fullBody.body.innerHTML;
|
||||||
|
}
|
||||||
|
|
||||||
|
const makeParagraphs = (text, func) => {
|
||||||
|
const chunks = text.split(/\n{2,}/);
|
||||||
|
if (chunks.length == 1) {
|
||||||
|
return func(document.createTextNode(text));
|
||||||
|
}
|
||||||
|
const paragraphs = chunks.map((t) => {
|
||||||
|
const p = document.createElement("p");
|
||||||
|
p.innerText = t;
|
||||||
|
return p;
|
||||||
|
});
|
||||||
|
for (let i = paragraphs.length - 1; i >= 0; i--) {
|
||||||
|
func(paragraphs[i]);
|
||||||
|
}
|
||||||
|
};
|
||||||
Loading…
Reference in a new issue