first working substitution. see #146
This commit is contained in:
parent
1e20dc3ba5
commit
4842b623d1
1 changed files with 44 additions and 15 deletions
|
|
@ -19,9 +19,10 @@
|
|||
// Some original methods are derived from https://github.com/ali-raheem/Aify/blob/cfadf52f576b7be3720b5b73af7c8d3129c054da/plugin/html/actions.js
|
||||
|
||||
import { getPrompts } from './mzta-prompts.js';
|
||||
import { getLanguageDisplayName, getMenuContextCompose, getMenuContextDisplay, i18nConditionalGet } from './mzta-utils.js'
|
||||
import { getLanguageDisplayName, getMenuContextCompose, getMenuContextDisplay, i18nConditionalGet, getMailSubject } from './mzta-utils.js'
|
||||
import { taLogger } from './mzta-logger.js';
|
||||
|
||||
import { placeholdersUtils, getPlaceholders } from './mzta-placeholders.js';
|
||||
|
||||
export class mzta_Menus {
|
||||
|
||||
allPrompts = [];
|
||||
|
|
@ -73,8 +74,8 @@ export class mzta_Menus {
|
|||
|
||||
let curr_menu_entry = {id: curr_prompt.id, is_default: curr_prompt.is_default, name: curr_prompt.name};
|
||||
|
||||
const getHighlight = async () => {
|
||||
const tabs = await browser.tabs.query({ active: true, currentWindow: true });
|
||||
const getHighlight = async (tabs) => {
|
||||
//const tabs = await browser.tabs.query({ active: true, currentWindow: true });
|
||||
return {tabId: tabs[0].id,
|
||||
selection: await browser.tabs.sendMessage(tabs[0].id, { command: "getSelectedText" }),
|
||||
text: await browser.tabs.sendMessage(tabs[0].id, { command: "getTextOnly" })
|
||||
|
|
@ -82,23 +83,21 @@ export class mzta_Menus {
|
|||
};
|
||||
|
||||
curr_menu_entry.act = async () => {
|
||||
const msg_text = await getHighlight();
|
||||
const tabs = await browser.tabs.query({ active: true, currentWindow: true });
|
||||
const msg_text = await getHighlight(tabs);
|
||||
|
||||
//check if a selection is needed
|
||||
if(String(curr_prompt.need_selected) == "1" && (msg_text.selection==='')){
|
||||
//A selection is needed, but nothing is selected!
|
||||
//alert(browser.i18n.getMessage('prompt_selection_needed'));
|
||||
const tabs = await browser.tabs.query({ active: true, currentWindow: true });
|
||||
browser.tabs.sendMessage(tabs[0].id, { command: "sendAlert", message : browser.i18n.getMessage('prompt_selection_needed') });
|
||||
return;
|
||||
}
|
||||
|
||||
var body_text = '';
|
||||
if (msg_text.selection!=='') {
|
||||
body_text = msg_text.selection.replace(/\s+/g, ' ').trim();
|
||||
} else {
|
||||
body_text = msg_text.text.replace(/\s+/g, ' ').trim();
|
||||
}
|
||||
let body_text = '';
|
||||
let selection_text = '';
|
||||
selection_text = msg_text.selection.replace(/\s+/g, ' ').trim();
|
||||
body_text = msg_text.text.replace(/\s+/g, ' ').trim();
|
||||
//open chatgpt window
|
||||
//console.log("Click menu item...");
|
||||
let chatgpt_lang = '';
|
||||
|
|
@ -112,9 +111,39 @@ export class mzta_Menus {
|
|||
chatgpt_lang = browser.i18n.getMessage("prompt_lang") + " " + chatgpt_lang + ".";
|
||||
}
|
||||
}
|
||||
|
||||
// let mail_subject = await getMailSubject(tabs[0]);
|
||||
// console.log(">>>>>>>>>>>>>>> mail_subject: " + mail_subject);
|
||||
|
||||
var fullPrompt = curr_prompt.text + (String(curr_prompt.need_signature) == "1" ? " " + await this.getDefaultSignature():"") + " " + chatgpt_lang + " \"" + body_text + "\" ";
|
||||
|
||||
let fullPrompt = '';
|
||||
if(!placeholdersUtils.hasPlaceholder(curr_prompt.text)){
|
||||
// no placeholders, do as usual
|
||||
fullPrompt = curr_prompt.text + (String(curr_prompt.need_signature) == "1" ? " " + await this.getDefaultSignature():"") + " " + chatgpt_lang + " \"" + (selection_text=='' ? body_text : selection_text) + "\" ";
|
||||
}else{
|
||||
let mail_subject = await getMailSubject(tabs[0]);
|
||||
// we have at least a placeholder, do the magic!
|
||||
let currPHs = await placeholdersUtils.extractPlaceholders(curr_prompt.text);
|
||||
// console.log(">>>>>>>>>> currPHs: " + JSON.stringify(currPHs));
|
||||
let finalSubs = {};
|
||||
for(let currPH of currPHs){
|
||||
switch(currPH.id){
|
||||
case 'mail_body':
|
||||
finalSubs['mail_body'] = body_text;
|
||||
break;
|
||||
case 'mail_subject':
|
||||
finalSubs['mail_subject'] = mail_subject;
|
||||
break;
|
||||
case 'selected_text':
|
||||
finalSubs['selected_text'] = selection_text;
|
||||
break;
|
||||
default: // TODO Manage custom placeholders
|
||||
break;
|
||||
}
|
||||
}
|
||||
// console.log(">>>>>>>>>> finalSubs: " + JSON.stringify(finalSubs));
|
||||
fullPrompt = placeholdersUtils.replacePlaceholders(curr_prompt.text, finalSubs) + (String(curr_prompt.need_signature) == "1" ? " " + await this.getDefaultSignature():"") + " " + chatgpt_lang;
|
||||
}
|
||||
|
||||
switch(curr_prompt.id){
|
||||
case 'prompt_translate_this':
|
||||
let prefs2 = await browser.storage.sync.get({default_chatgpt_lang: getLanguageDisplayName(browser.i18n.getUILanguage())});
|
||||
|
|
@ -131,7 +160,7 @@ export class mzta_Menus {
|
|||
break;
|
||||
}
|
||||
|
||||
const tabs = await browser.tabs.query({ active: true, currentWindow: true });
|
||||
// const tabs = await browser.tabs.query({ active: true, currentWindow: true });
|
||||
// add custom text if needed
|
||||
//browser.runtime.sendMessage({command: "chatgpt_open", prompt: fullPrompt, action: curr_prompt.action, tabId: tabs[0].id});
|
||||
this.openChatGPT(fullPrompt, curr_prompt.action, tabs[0].id, curr_prompt.name, curr_prompt.need_custom_text);
|
||||
|
|
|
|||
Loading…
Reference in a new issue