refining how to handle specific api settings. see #102

This commit is contained in:
mic 2026-01-03 00:03:48 +01:00
parent 01142fb582
commit 97b016ab63
7 changed files with 61 additions and 19 deletions

View file

@ -23,6 +23,7 @@
import { prefs_default, integration_options_config } from '../options/mzta-options-default.js';
import { placeholdersUtils } from '../js/mzta-placeholders.js';
import { getAPIsInitMessageString, convertNewlinesToBr } from '../js/mzta-utils.js';
import { loadPrompt } from '../js/mzta-prompts.js';
// Get the LLM to be used
const urlParams = new URLSearchParams(window.location.search);
@ -82,6 +83,22 @@ if (worker) {
let prefs_api = await browser.storage.sync.get(prefsToGet);
if (prompt_id) {
try {
const prompt = await loadPrompt(prompt_id);
if (prompt && prompt.api_type === llm) {
for (const key in options_config) {
const prefKey = `${integration_prefix}_${key}`;
if (prompt[prefKey] !== undefined) {
prefs_api[prefKey] = prompt[prefKey];
}
}
}
} catch (e) {
console.error("[ThunderAI] Error loading prompt settings:", e);
}
}
let i18nStrings = {};
const i18n_msg_key = integration === 'openai_comp' ? 'OpenAIComp_api_request_failed' : `${integration}_api_request_failed`;
i18nStrings[i18n_msg_key] = browser.i18n.getMessage(i18n_msg_key);

View file

@ -440,7 +440,6 @@ async function getDefaultPrompts_withProps() {
prompt.chatgpt_web_project = prefs._default_prompts_properties[prompt.id].chatgpt_web_project;
prompt.chatgpt_web_custom_gpt = (prefs._default_prompts_properties[prompt.id]?.chatgpt_web_custom_gpt || '').trim();
prompt.api_type = (prefs._default_prompts_properties[prompt.id]?.api_type || '').trim();
prompt.api_model = (prefs._default_prompts_properties[prompt.id]?.api_model || '').trim();
}else{
prompt.position_display = pos;
prompt.position_compose = pos;
@ -475,9 +474,6 @@ async function getCustomPrompts() {
if(prompt.api_type === undefined){
prompt.api_type = "";
}
if(prompt.api_model === undefined){
prompt.api_model = "";
}
});
return prefs._custom_prompt;
}
@ -495,7 +491,6 @@ export async function setDefaultPromptsProperties(prompts) {
chatgpt_web_project: (prompt.chatgpt_web_project === undefined || prompt.chatgpt_web_project === "undefined") ? "" : prompt.chatgpt_web_project,
chatgpt_web_custom_gpt: (prompt.chatgpt_web_custom_gpt === undefined || prompt.chatgpt_web_custom_gpt === "undefined") ? "" : prompt.chatgpt_web_custom_gpt,
api_type: (prompt.api_type === undefined || prompt.api_type === "undefined") ? "" : prompt.api_type,
api_model: (prompt.api_model === undefined || prompt.api_model === "undefined") ? "" : prompt.api_model
};
});
//console.log('>>>>>>>>>>>>>> default_prompts_properties: ' + JSON.stringify(default_prompts_properties));
@ -590,7 +585,6 @@ export async function savePrompt(prompt) {
export async function clearPromptAPI(id){
let _prompt = await loadPrompt(id);
_prompt.api = "";
_prompt.model = "";
_prompt.api_type = "";
await savePrompt(_prompt);
}

View file

@ -648,7 +648,9 @@ export function getConnectionType(prefsOrType, prompt, prefixOrSpecific = null)
}
if (specificType && specificType !== '') return specificType;
if (prompt && prompt.api && prompt.api !== '') return prompt.api;
if (prompt) {
if (prompt.api_type && prompt.api_type !== '') return prompt.api_type;
}
return defaultType;
}

View file

@ -371,6 +371,9 @@ async function openChatGPT(promptText, action, curr_tabId, prompt_name = '', do_
prefs = checkScreenDimensions(prefs);
//console.log(">>>>>>>>>>>>>>>> prefs: " + JSON.stringify(prefs));
// console.log(">>>>>>>>>>>>>>>> prompt_info: " + JSON.stringify(prompt_info));
prefs.connection_type = getConnectionType(prefs, prompt_info);
taLog.log("Prompt length: " + promptText.length);
let _max_prompt_length = prefs.max_prompt_length;
if(prefs.connection_type == 'chatgpt_web'){

View file

@ -1022,7 +1022,7 @@ export async function initializeSpecificIntegrationUI({
let prompt = await loadPrompt(promptId);
if(!prompt) return;
prompt.api = conntype;
prompt.api_type = conntype;
for (const [integration, options] of Object.entries(integration_options_config)) {
for (const key of Object.keys(options)) {

View file

@ -48,11 +48,11 @@ document.addEventListener('DOMContentLoaded', async () => {
let specialPrompts = await getSpecialPrompts();
let addtags_prompt = specialPrompts.find(prompt => prompt.id === 'prompt_add_tags');
if (addtags_prompt && addtags_prompt.api && addtags_prompt.api !== '') {
if (addtags_prompt && addtags_prompt.api_type && addtags_prompt.api_type !== '') {
let update_prefs = {};
update_prefs['add_tags_connection_type'] = addtags_prompt.api;
update_prefs['add_tags_connection_type'] = addtags_prompt.api_type;
let integration = addtags_prompt.api.replace('_api', '');
let integration = addtags_prompt.api_type.replace('_api', '');
if (integration_options_config && integration_options_config[integration]) {
for (const key of Object.keys(integration_options_config[integration])) {
if (addtags_prompt[key] !== undefined) {
@ -344,14 +344,18 @@ async function restoreOptions() {
let addtags_prompt = specialPrompts.find(prompt => prompt.id === 'prompt_add_tags');
if (addtags_prompt) {
if (addtags_prompt.api && addtags_prompt.api !== '') {
getting['add_tags_connection_type'] = addtags_prompt.api;
if (addtags_prompt.api_type && addtags_prompt.api_type !== '') {
getting['add_tags_connection_type'] = addtags_prompt.api_type;
} else {
getting['add_tags_connection_type'] = getting['connection_type'];
}
for (const [integration, options] of Object.entries(integration_options_config)) {
for (const key of Object.keys(options)) {
const propName = `${integration}_${key}`;
if (addtags_prompt[propName] !== undefined) {
if (addtags_prompt[propName] !== undefined && addtags_prompt[propName] !== '') {
getting[`add_tags_${propName}`] = addtags_prompt[propName];
} else {
getting[`add_tags_${propName}`] = getting[propName];
}
}
}

View file

@ -16,7 +16,10 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import { prefs_default, integration_options_config } from '../../options/mzta-options-default.js';
import {
prefs_default,
integration_options_config
} from '../../options/mzta-options-default.js';
import { taLogger } from '../../js/mzta-logger.js';
import {
getSpecialPrompts,
@ -42,6 +45,21 @@ document.addEventListener('DOMContentLoaded', async () => {
let specialPrompts = await getSpecialPrompts();
let spamfilter_prompt = specialPrompts.find(prompt => prompt.id === 'prompt_spamfilter');
if (spamfilter_prompt && spamfilter_prompt.api_type && spamfilter_prompt.api_type !== '') {
let update_prefs = {};
update_prefs['spamfilter_connection_type'] = spamfilter_prompt.api_type;
let integration = spamfilter_prompt.api_type.replace('_api', '');
if (integration_options_config && integration_options_config[integration]) {
for (const key of Object.keys(integration_options_config[integration])) {
if (spamfilter_prompt[key] !== undefined) {
update_prefs[`spamfilter_${integration}_${key}`] = spamfilter_prompt[key];
}
}
}
await browser.storage.sync.set(update_prefs);
}
await initializeSpecificIntegrationUI({
prefix: 'spamfilter',
promptId: 'prompt_spamfilter',
@ -313,14 +331,18 @@ async function restoreOptions() {
let spamfilter_prompt = specialPrompts.find(prompt => prompt.id === 'prompt_spamfilter');
if (spamfilter_prompt) {
if (spamfilter_prompt.api && spamfilter_prompt.api !== '') {
getting['spamfilter_connection_type'] = spamfilter_prompt.api;
if (spamfilter_prompt.api_type && spamfilter_prompt.api_type !== '') {
getting['spamfilter_connection_type'] = spamfilter_prompt.api_type;
} else {
getting['spamfilter_connection_type'] = getting['connection_type'];
}
for (const [integration, options] of Object.entries(integration_options_config)) {
for (const key of Object.keys(options)) {
const propName = `${integration}_${key}`;
if (spamfilter_prompt[propName] !== undefined) {
if (spamfilter_prompt[propName] !== undefined && spamfilter_prompt[propName] !== '') {
getting[`spamfilter_${propName}`] = spamfilter_prompt[propName];
} else {
getting[`spamfilter_${propName}`] = getting[propName];
}
}
}