diff --git a/js/mzta-utils.js b/js/mzta-utils.js index d7f1b300..d10e309d 100644 --- a/js/mzta-utils.js +++ b/js/mzta-utils.js @@ -203,17 +203,21 @@ export async function createTag(tag) { if(prefs_tag.add_tags_first_uppercase) tag = tag.toLowerCase().charAt(0).toUpperCase() + tag.toLowerCase().slice(1); try { if(await isThunderbird128OrGreater()) { - return browser.messages.tags.create('ta-'+tag.toLowerCase(), tag, generateHexColorForTag()); + return browser.messages.tags.create('$ta-'+sanitizeString(tag), tag, generateHexColorForTag()); }else{ - return browser.messages.createTag('ta-'+tag.toLowerCase(), tag, generateHexColorForTag()); + return browser.messages.createTag('$ta-'+sanitizeString(tag), tag, generateHexColorForTag()); } } catch (error) { console.error('[ThunderAI] Error creating tag:', error); } } +export function checkIfTagExists(tag, tags_list) { + return tags_list.hasOwnProperty("$ta-" + sanitizeString(tag)); +} + export async function assignTagsToMessage(messageId, tags) { - tags = tags.map(tag => `ta-${tag.toLowerCase()}`); + tags = tags.map(tag => `$ta-${sanitizeString(tag)}`); let msg_prop = await browser.messages.get(messageId); tags = tags.concat(msg_prop.tags || []); try { @@ -223,6 +227,22 @@ export async function assignTagsToMessage(messageId, tags) { } } +function sanitizeString(input) { + input = input.toLowerCase(); + // Define the regex to match valid characters + const regex = /^[^ ()/{%*<>"]+$/; + // Filter out invalid characters from the string + let sanitized = ''; + for (const char of input) { + // Check if the character is valid according to the regex + if (regex.test(char)) { + sanitized += char; + } + } + + return sanitized; +} + function generateHexColorForTag() { const red = Math.floor(Math.random() * 256); const green = Math.floor(Math.random() * 256); diff --git a/mzta-background.js b/mzta-background.js index 8aca3e94..2ad8cd15 100644 --- a/mzta-background.js +++ b/mzta-background.js @@ -20,7 +20,7 @@ import { mzta_script } from './js/mzta-chatgpt.js'; import { prefs_default } from './options/mzta-options-default.js'; import { mzta_Menus } from './js/mzta-menus.js'; import { taLogger } from './js/mzta-logger.js'; -import { getCurrentIdentity, getOriginalBody, replaceBody, setBody, i18nConditionalGet, generateCallID, migrateCustomPromptsStorage, migrateDefaultPromptsPropStorage, getGPTWebModelString, getTagsList, createTag, assignTagsToMessage } from './js/mzta-utils.js'; +import { getCurrentIdentity, getOriginalBody, replaceBody, setBody, i18nConditionalGet, generateCallID, migrateCustomPromptsStorage, migrateDefaultPromptsPropStorage, getGPTWebModelString, getTagsList, createTag, assignTagsToMessage, checkIfTagExists } from './js/mzta-utils.js'; await migrateCustomPromptsStorage(); await migrateDefaultPromptsPropStorage(); @@ -241,7 +241,7 @@ messenger.runtime.onMessage.addListener((message, sender, sendResponse) => { let new_tags = []; for (const tag of message.tags) { console.log(">>>>>>>>>>>>>>> tag: " + tag); - if (!all_tags_list.hasOwnProperty("ta-" + tag.toLowerCase())) { + if (!checkIfTagExists(tag, all_tags_list)) { taLog.log("Creating tag: " + tag); await createTag(tag); }