Manage the options when using the API. Fixes #93
This commit is contained in:
parent
94e5398b02
commit
283e6fda3d
8 changed files with 142 additions and 38 deletions
|
|
@ -386,5 +386,21 @@
|
||||||
"customprompts_form_label_define_response_lang": {
|
"customprompts_form_label_define_response_lang": {
|
||||||
"message": "Definieren Sie die Antwortsprache im Prompt.",
|
"message": "Definieren Sie die Antwortsprache im Prompt.",
|
||||||
"description": ""
|
"description": ""
|
||||||
|
},
|
||||||
|
"prefs_Connection_type": {
|
||||||
|
"message": "Verbindungstyp",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"prefs_Connection_type_ChatGTP_Web": {
|
||||||
|
"message": "ChatGTP Weboberfläche",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"prefs_Connection_type_ChatGTP_API": {
|
||||||
|
"message": "ChatGTP OpenAI API",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"prefs_prefs_ChatGPT_API_Key": {
|
||||||
|
"message": "ChatGPT API-Schlüssel",
|
||||||
|
"description": ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -386,5 +386,21 @@
|
||||||
"customprompts_form_label_define_response_lang": {
|
"customprompts_form_label_define_response_lang": {
|
||||||
"message": "Define the reponse languange in the prompt",
|
"message": "Define the reponse languange in the prompt",
|
||||||
"description": ""
|
"description": ""
|
||||||
|
},
|
||||||
|
"prefs_Connection_type": {
|
||||||
|
"message": "Connection Type",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"prefs_Connection_type_ChatGTP_Web": {
|
||||||
|
"message": "ChatGTP Web Interface",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"prefs_Connection_type_ChatGTP_API": {
|
||||||
|
"message": "ChatGTP OpenAI API",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"prefs_prefs_ChatGPT_API_Key": {
|
||||||
|
"message": "ChatGPT API Key",
|
||||||
|
"description": ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -386,5 +386,21 @@
|
||||||
"customprompts_form_label_define_response_lang": {
|
"customprompts_form_label_define_response_lang": {
|
||||||
"message": "Définir la langue de réponse dans le prompt.",
|
"message": "Définir la langue de réponse dans le prompt.",
|
||||||
"description": ""
|
"description": ""
|
||||||
|
},
|
||||||
|
"prefs_Connection_type": {
|
||||||
|
"message": "Type de connexion",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"prefs_Connection_type_ChatGTP_Web": {
|
||||||
|
"message": "Interface Web ChatGTP",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"prefs_Connection_type_ChatGTP_API": {
|
||||||
|
"message": "API OpenAI ChatGTP",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"prefs_prefs_ChatGPT_API_Key": {
|
||||||
|
"message": "Clé API ChatGPT",
|
||||||
|
"description": ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -386,5 +386,21 @@
|
||||||
"customprompts_form_label_define_response_lang": {
|
"customprompts_form_label_define_response_lang": {
|
||||||
"message": "Definisci la lingua di risposta nel prompt.",
|
"message": "Definisci la lingua di risposta nel prompt.",
|
||||||
"description": ""
|
"description": ""
|
||||||
|
},
|
||||||
|
"prefs_Connection_type": {
|
||||||
|
"message": "Tipo di connessione",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"prefs_Connection_type_ChatGTP_Web": {
|
||||||
|
"message": "Interfaccia Web ChatGTP",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"prefs_Connection_type_ChatGTP_API": {
|
||||||
|
"message": "API OpenAI per ChatGTP",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"prefs_prefs_ChatGPT_API_Key": {
|
||||||
|
"message": "Chiave API ChatGPT",
|
||||||
|
"description": ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -147,7 +147,8 @@ async function openChatGPT(promptText, action, curr_tabId, prompt_name = '', do_
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!prefs.api_active){
|
switch(prefs.connection_type){
|
||||||
|
case 'chatgpt_web':
|
||||||
// We are using the ChatGPT web interface
|
// We are using the ChatGPT web interface
|
||||||
let newWindow = await browser.windows.create({
|
let newWindow = await browser.windows.create({
|
||||||
url: "https://chatgpt.com",
|
url: "https://chatgpt.com",
|
||||||
|
|
@ -198,34 +199,35 @@ async function openChatGPT(promptText, action, curr_tabId, prompt_name = '', do_
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
console.error("[ThunderAI] ChatGPT web interface error injecting the script: ", err);
|
console.error("[ThunderAI] ChatGPT web interface error injecting the script: ", err);
|
||||||
});
|
});
|
||||||
}else{
|
break; // chatgpt_web
|
||||||
|
case 'chatgpt_api':
|
||||||
// We are using the ChatGPT API
|
// We are using the ChatGPT API
|
||||||
let newWindow = await browser.windows.create({
|
let newWindow2 = await browser.windows.create({
|
||||||
url: browser.runtime.getURL('api_webchat/index.html'),
|
url: browser.runtime.getURL('api_webchat/index.html'),
|
||||||
type: "popup",
|
type: "popup",
|
||||||
width: prefs.chatgpt_win_width,
|
width: prefs.chatgpt_win_width,
|
||||||
height: prefs.chatgpt_win_height
|
height: prefs.chatgpt_win_height
|
||||||
});
|
});
|
||||||
|
|
||||||
createdWindowID = newWindow.id;
|
createdWindowID = newWindow2.id;
|
||||||
let createdTab = newWindow.tabs[0];
|
let createdTab2 = newWindow2.tabs[0];
|
||||||
|
|
||||||
// Wait for tab loaded. // TODO This is needed in 128+, but doesn't work in 115
|
// Wait for tab loaded. // TODO This is needed in 128+, but doesn't work in 115
|
||||||
// await new Promise(resolve => {
|
// await new Promise(resolve => {
|
||||||
// const tabIsLoaded = tab => {
|
// const tabIsLoaded2 = tab => {
|
||||||
// return tab.status == "complete" && tab.url != "about:blank";
|
// return tab.status == "complete" && tab.url != "about:blank";
|
||||||
// };
|
// };
|
||||||
// const listener = (tabId, changeInfo, updatedTab) => {
|
// const listener2 = (tabId, changeInfo, updatedTab) => {
|
||||||
// if (tabIsLoaded(updatedTab)) {
|
// if (tabIsLoaded2(updatedTab)) {
|
||||||
// browser.tabs.onUpdated.removeListener(listener);
|
// browser.tabs.onUpdated.removeListener(listener2);
|
||||||
// resolve();
|
// resolve();
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// // Early exit if loaded already
|
// // Early exit if loaded already
|
||||||
// if (tabIsLoaded(createdTab)) {
|
// if (tabIsLoaded2(createdTab2)) {
|
||||||
// resolve();
|
// resolve();
|
||||||
// } else {
|
// } else {
|
||||||
// browser.tabs.onUpdated.addListener(listener);
|
// browser.tabs.onUpdated.addListener(listener2);
|
||||||
// }
|
// }
|
||||||
// });
|
// });
|
||||||
|
|
||||||
|
|
@ -233,7 +235,8 @@ async function openChatGPT(promptText, action, curr_tabId, prompt_name = '', do_
|
||||||
let mailMessageId = -1;
|
let mailMessageId = -1;
|
||||||
if(mailMessage) mailMessageId = mailMessage.id;
|
if(mailMessage) mailMessageId = mailMessage.id;
|
||||||
|
|
||||||
browser.tabs.sendMessage(createdTab.id, { command: "chatgpt_send", prompt: promptText, action: action, tabId: curr_tabId, mailMessageId: mailMessageId});
|
browser.tabs.sendMessage(createdTab2.id, { command: "chatgpt_send", prompt: promptText, action: action, tabId: curr_tabId, mailMessageId: mailMessageId});
|
||||||
|
break; // chatgpt_api
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,6 @@ export const prefs_default = {
|
||||||
chatpgt_use_gpt4: false,
|
chatpgt_use_gpt4: false,
|
||||||
chatgpt_keep_formatting: false,
|
chatgpt_keep_formatting: false,
|
||||||
default_chatgpt_lang: '',
|
default_chatgpt_lang: '',
|
||||||
api_active: false,
|
connection_type: 'chatgpt_web', //Other values: 'chatgpt_api'
|
||||||
api_key_chatgpt: '',
|
api_key_chatgpt: '',
|
||||||
}
|
}
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="miczRelNotes"><a href="mzta-release-notes.html">__MSG_prefs_OptionText_release_notes__</a></div>
|
<div id="miczRelNotes"><a href="mzta-release-notes.html">__MSG_prefs_OptionText_release_notes__</a></div>
|
||||||
<div id="miczStatusPage"><a href="https://micz.it/thunderbird-addon-thunderai/status/">__MSG_prefs_status_page__</a></div>
|
<div id="miczStatusPage" class="conntype_chatgpt_web"><a href="https://micz.it/thunderbird-addon-thunderai/status/">__MSG_prefs_status_page__</a></div>
|
||||||
<table id="miczPrefs">
|
<table id="miczPrefs">
|
||||||
<tr>
|
<tr>
|
||||||
<td><span>__MSG_prefs_OptionText_chatgpt_win_text__</span></td>
|
<td><span>__MSG_prefs_OptionText_chatgpt_win_text__</span></td>
|
||||||
|
|
@ -60,6 +60,22 @@
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label>
|
||||||
|
<span>__MSG_prefs_Connection_type__</span>
|
||||||
|
</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<label>
|
||||||
|
<select id="connection_type" name="connection_type" class="option-input">
|
||||||
|
<option value="chatgpt_web">__MSG_prefs_Connection_type_ChatGTP_Web__</option>
|
||||||
|
<option value="chatgpt_api">__MSG_prefs_Connection_type_ChatGTP_API__</option>
|
||||||
|
</select>
|
||||||
|
</label>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<tr class="conntype_chatgpt_web">
|
||||||
<td><label>
|
<td><label>
|
||||||
<span>__MSG_prefs_OptionText_chatpgt_keep_formatting__</span>
|
<span>__MSG_prefs_OptionText_chatpgt_keep_formatting__</span>
|
||||||
</label></td>
|
</label></td>
|
||||||
|
|
@ -70,7 +86,7 @@
|
||||||
</label>
|
</label>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr class="conntype_chatgpt_web">
|
||||||
<td><label>
|
<td><label>
|
||||||
<span>__MSG_prefs_OptionText_chatpgt_use_gpt4__</span>
|
<span>__MSG_prefs_OptionText_chatpgt_use_gpt4__</span>
|
||||||
</label></td>
|
</label></td>
|
||||||
|
|
@ -81,24 +97,13 @@
|
||||||
</label>
|
</label>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr class="conntype_chatgpt_api">
|
||||||
<td><label>
|
<td><label>
|
||||||
<span>API Activate</span>
|
<span>__MSG_prefs_ChatGPT_API_Key__</span>
|
||||||
</label></td>
|
</label></td>
|
||||||
<td>
|
<td>
|
||||||
<label>
|
<label>
|
||||||
<input type="checkbox" id="api_active" name="api_active" class="option-input" />
|
<input type="text" id="api_key_chatgpt" name="api_key_chatgpt" class="option-input" style="width:28em" />
|
||||||
<span>Use that OpenAI API!</span>
|
|
||||||
</label>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><label>
|
|
||||||
<span>ChatGPT API Key</span>
|
|
||||||
</label></td>
|
|
||||||
<td>
|
|
||||||
<label>
|
|
||||||
<input type="text" id="api_key_chatgpt" name="api_key_chatgpt" class="option-input" />
|
|
||||||
<span></span>
|
<span></span>
|
||||||
</label>
|
</label>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
||||||
|
|
@ -45,9 +45,10 @@ function saveOptions(e) {
|
||||||
browser.storage.sync.set(options);
|
browser.storage.sync.set(options);
|
||||||
}
|
}
|
||||||
|
|
||||||
function restoreOptions() {
|
async function restoreOptions() {
|
||||||
function setCurrentChoice(result) {
|
function setCurrentChoice(result) {
|
||||||
document.querySelectorAll(".option-input").forEach(element => {
|
document.querySelectorAll(".option-input").forEach(element => {
|
||||||
|
//console.log("[ThunderAI] Options restoring " + element.id + " = " + result[element.id]);
|
||||||
switch (element.type) {
|
switch (element.type) {
|
||||||
case 'checkbox':
|
case 'checkbox':
|
||||||
element.checked = result[element.id] || false;
|
element.checked = result[element.id] || false;
|
||||||
|
|
@ -67,6 +68,7 @@ function restoreOptions() {
|
||||||
if (element.tagName === 'SELECT') {
|
if (element.tagName === 'SELECT') {
|
||||||
let default_select_value = '';
|
let default_select_value = '';
|
||||||
if(element.id == 'reply_type') default_select_value = 'reply_all';
|
if(element.id == 'reply_type') default_select_value = 'reply_all';
|
||||||
|
if(element.id == 'connection_type') default_select_value = 'chatgpt_web';
|
||||||
element.value = result[element.id] || default_select_value;
|
element.value = result[element.id] || default_select_value;
|
||||||
if (element.value === '') {
|
if (element.value === '') {
|
||||||
element.selectedIndex = -1;
|
element.selectedIndex = -1;
|
||||||
|
|
@ -78,20 +80,47 @@ function restoreOptions() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function onError(error) {
|
let getting = await browser.storage.sync.get(prefs_default);
|
||||||
console.log(`[ThunderAI] Error: ${error}`);
|
setCurrentChoice(getting);
|
||||||
}
|
|
||||||
|
|
||||||
let getting = browser.storage.sync.get(null);
|
|
||||||
getting.then(setCurrentChoice, onError);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
function showConnectionOptions() {
|
||||||
restoreOptions();
|
let chatgpt_web_display = 'table-row';
|
||||||
|
let chatgpt_api_display = 'none';
|
||||||
|
if (document.getElementById("connection_type").value === "chatgpt_web") {
|
||||||
|
chatgpt_web_display = 'table-row';
|
||||||
|
}else{
|
||||||
|
chatgpt_web_display = 'none';
|
||||||
|
}
|
||||||
|
if (document.getElementById("connection_type").value === "chatgpt_api") {
|
||||||
|
chatgpt_api_display = 'table-row';
|
||||||
|
}else{
|
||||||
|
chatgpt_api_display = 'none';
|
||||||
|
}
|
||||||
|
document.querySelectorAll(".conntype_chatgpt_web").forEach(element => {
|
||||||
|
element.style.display = chatgpt_web_display;
|
||||||
|
});
|
||||||
|
document.querySelectorAll(".conntype_chatgpt_api").forEach(element => {
|
||||||
|
element.style.display = chatgpt_api_display;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function warnAPIKeyEmpty() {
|
||||||
|
let apiKeyInput = document.getElementById('api_key_chatgpt');
|
||||||
|
if(apiKeyInput.value === ''){
|
||||||
|
apiKeyInput.style.border = '2px solid red';
|
||||||
|
}else{
|
||||||
|
apiKeyInput.style.border = 'none';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
document.addEventListener('DOMContentLoaded', async () => {
|
||||||
|
await restoreOptions();
|
||||||
i18n.updateDocument();
|
i18n.updateDocument();
|
||||||
document.querySelectorAll(".option-input").forEach(element => {
|
document.querySelectorAll(".option-input").forEach(element => {
|
||||||
element.addEventListener("change", saveOptions);
|
element.addEventListener("change", saveOptions);
|
||||||
});
|
});
|
||||||
|
showConnectionOptions();
|
||||||
document.getElementById('btnManagePrompts').addEventListener('click', () => {
|
document.getElementById('btnManagePrompts').addEventListener('click', () => {
|
||||||
// check if the tab is already there
|
// check if the tab is already there
|
||||||
browser.tabs.query({url: browser.runtime.getURL('../customprompts/mzta-custom-prompts.html')}).then((tabs) => {
|
browser.tabs.query({url: browser.runtime.getURL('../customprompts/mzta-custom-prompts.html')}).then((tabs) => {
|
||||||
|
|
@ -104,4 +133,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
document.getElementById("connection_type").addEventListener("change", showConnectionOptions);
|
||||||
|
document.getElementById("connection_type").addEventListener("change", warnAPIKeyEmpty);
|
||||||
|
document.getElementById("api_key_chatgpt").addEventListener("change", warnAPIKeyEmpty);
|
||||||
}, { once: true });
|
}, { once: true });
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue