Keeping the quoted text in the reply. Fixes #25.
This commit is contained in:
parent
b80ad8be3f
commit
7ec1529cf6
2 changed files with 43 additions and 12 deletions
|
|
@ -1,5 +1,7 @@
|
||||||
// Modified version derived from https://github.com/ali-raheem/Aify/blob/13ff87583bc520fb80f555ab90a90c5c9df797a7/plugin/content_scripts/compose.js
|
// Modified version derived from https://github.com/ali-raheem/Aify/blob/13ff87583bc520fb80f555ab90a90c5c9df797a7/plugin/content_scripts/compose.js
|
||||||
|
|
||||||
|
console.log('mzta-compose-script.js');
|
||||||
|
|
||||||
const makeParagraphs = (text, func) => {
|
const makeParagraphs = (text, func) => {
|
||||||
const chunks = text.split(/\n{2,}/);
|
const chunks = text.split(/\n{2,}/);
|
||||||
if (chunks.length == 1) {
|
if (chunks.length == 1) {
|
||||||
|
|
@ -31,6 +33,17 @@ const insert = function (text) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const insertReply = function (text) {
|
||||||
|
const prefix = window.document.body.getElementsByClassName("moz-cite-prefix");
|
||||||
|
if (prefix.length > 0) {
|
||||||
|
const divider = prefix[0];
|
||||||
|
let sibling = divider.previousSibling;
|
||||||
|
return makeParagraphs(text, function (p) {
|
||||||
|
window.document.body.insertBefore(p, sibling);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
browser.runtime.onMessage.addListener((message) => {
|
browser.runtime.onMessage.addListener((message) => {
|
||||||
switch (message.command) {
|
switch (message.command) {
|
||||||
|
|
@ -69,6 +82,10 @@ switch (message.command) {
|
||||||
case "getTextOnly":
|
case "getTextOnly":
|
||||||
return Promise.resolve(window.document.body.innerText);
|
return Promise.resolve(window.document.body.innerText);
|
||||||
|
|
||||||
|
case "insertText":
|
||||||
|
insertReply(message.text);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// do nothing
|
// do nothing
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -46,15 +46,7 @@ messenger.runtime.onMessage.addListener(async (message, sender, sendResponse) =>
|
||||||
browser.tabs.sendMessage(message.tabId, { command: "replaceSelectedText", text: message.text });
|
browser.tabs.sendMessage(message.tabId, { command: "replaceSelectedText", text: message.text });
|
||||||
return true;
|
return true;
|
||||||
case 'chatgpt_replyMessage':
|
case 'chatgpt_replyMessage':
|
||||||
//console.log('message.text: ' + message.text);
|
const paragraphsHtmlString = message.text;
|
||||||
const chunks = message.text.split(/\n{2,}/);
|
|
||||||
const paragraphs = chunks.map((t) => {
|
|
||||||
const p = document.createElement("p");
|
|
||||||
p.innerText = t;
|
|
||||||
return p;
|
|
||||||
});
|
|
||||||
const paragraphsHtmlString = paragraphs.map(p => p.outerHTML).join("");
|
|
||||||
//console.log('paragraphsHtmlString: ' + paragraphsHtmlString);
|
|
||||||
let prefs = await browser.storage.sync.get({reply_type: 'reply_all'});
|
let prefs = await browser.storage.sync.get({reply_type: 'reply_all'});
|
||||||
console.log('reply_type: ' + prefs.reply_type);
|
console.log('reply_type: ' + prefs.reply_type);
|
||||||
let replyType = 'replyToAll';
|
let replyType = 'replyToAll';
|
||||||
|
|
@ -62,12 +54,34 @@ messenger.runtime.onMessage.addListener(async (message, sender, sendResponse) =>
|
||||||
replyType = 'replyToSender';
|
replyType = 'replyToSender';
|
||||||
}
|
}
|
||||||
console.log('replyType: ' + replyType);
|
console.log('replyType: ' + replyType);
|
||||||
browser.messageDisplay.getDisplayedMessage(message.tabId).then((mailMessage) => {
|
browser.messageDisplay.getDisplayedMessage(message.tabId).then(async (mailMessage) => {
|
||||||
browser.compose.beginReply(mailMessage.id, replyType, {
|
let reply_tab = await browser.compose.beginReply(mailMessage.id, replyType, {
|
||||||
type: "reply",
|
type: "reply",
|
||||||
body: paragraphsHtmlString,
|
//body: paragraphsHtmlString,
|
||||||
isPlainText: false,
|
isPlainText: false,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// Wait for tab loaded.
|
||||||
|
await new Promise(resolve => {
|
||||||
|
const tabIsLoaded = tab => {
|
||||||
|
return tab.status == "complete" && tab.url != "about:blank";
|
||||||
|
};
|
||||||
|
const listener = (tabId, changeInfo, updatedTab) => {
|
||||||
|
if (tabIsLoaded(updatedTab)) {
|
||||||
|
browser.tabs.onUpdated.removeListener(listener);
|
||||||
|
resolve();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Early exit if loaded already
|
||||||
|
if (tabIsLoaded(reply_tab)) {
|
||||||
|
resolve();
|
||||||
|
} else {
|
||||||
|
browser.tabs.onUpdated.addListener(listener);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// we need to wait for the compose windows to load the content script
|
||||||
|
setTimeout(() => browser.tabs.sendMessage(reply_tab.id, { command: "insertText", text: paragraphsHtmlString }), 500);
|
||||||
|
return true;
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue