From 97b016ab63b636a45adfd725710c06950065dc00 Mon Sep 17 00:00:00 2001 From: mic Date: Sat, 3 Jan 2026 00:03:48 +0100 Subject: [PATCH] refining how to handle specific api settings. see #102 --- api_webchat/controller.js | 17 ++++++++++++++++ js/mzta-prompts.js | 8 +------- js/mzta-utils.js | 4 +++- mzta-background.js | 3 +++ pages/_lib/connection-ui.js | 2 +- pages/addtags/mzta-add-tags.js | 16 +++++++++------ pages/spamfilter/mzta-spamfilter.js | 30 +++++++++++++++++++++++++---- 7 files changed, 61 insertions(+), 19 deletions(-) diff --git a/api_webchat/controller.js b/api_webchat/controller.js index 050471d2..390d103c 100644 --- a/api_webchat/controller.js +++ b/api_webchat/controller.js @@ -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); diff --git a/js/mzta-prompts.js b/js/mzta-prompts.js index b6db041a..3f1526af 100644 --- a/js/mzta-prompts.js +++ b/js/mzta-prompts.js @@ -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); } \ No newline at end of file diff --git a/js/mzta-utils.js b/js/mzta-utils.js index c833bb31..f58d9b99 100644 --- a/js/mzta-utils.js +++ b/js/mzta-utils.js @@ -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; } diff --git a/mzta-background.js b/mzta-background.js index e39bc0a1..1b5b8e40 100644 --- a/mzta-background.js +++ b/mzta-background.js @@ -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'){ diff --git a/pages/_lib/connection-ui.js b/pages/_lib/connection-ui.js index 550a1491..70c40636 100644 --- a/pages/_lib/connection-ui.js +++ b/pages/_lib/connection-ui.js @@ -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)) { diff --git a/pages/addtags/mzta-add-tags.js b/pages/addtags/mzta-add-tags.js index a39bd217..314d62e0 100644 --- a/pages/addtags/mzta-add-tags.js +++ b/pages/addtags/mzta-add-tags.js @@ -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]; } } } diff --git a/pages/spamfilter/mzta-spamfilter.js b/pages/spamfilter/mzta-spamfilter.js index a6f7d30e..8df6369e 100644 --- a/pages/spamfilter/mzta-spamfilter.js +++ b/pages/spamfilter/mzta-spamfilter.js @@ -16,7 +16,10 @@ * along with this program. If not, see . */ -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]; } } }