diff --git a/_locales/en/messages.json b/_locales/en/messages.json index ddb3e3b6..2de42d9b 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -822,5 +822,9 @@ "reset_default": { "message": "Reset to default", "description": "" + }, + "addtags_excl_list_infoline2": { + "message": "Add a word per line, or separated by a comma.", + "description": "" } } \ No newline at end of file diff --git a/js/mzta-addatags-exclusion-list.js b/js/mzta-addatags-exclusion-list.js new file mode 100644 index 00000000..e03a8c1d --- /dev/null +++ b/js/mzta-addatags-exclusion-list.js @@ -0,0 +1,10 @@ + + +export async function addTags_getExclusionList() { + let prefs_excluded_tags = await browser.storage.local.get({add_tags_exclusions: []}); + return prefs_excluded_tags.add_tags_exclusions; +} + +export function addTags_setExclusionList(add_tags_exclusions) { + browser.storage.local.set({add_tags_exclusions: add_tags_exclusions}); +} \ No newline at end of file diff --git a/pages/addtags/mzta-add-tags.css b/pages/addtags/mzta-add-tags.css index 22019d66..193e72fe 100644 --- a/pages/addtags/mzta-add-tags.css +++ b/pages/addtags/mzta-add-tags.css @@ -18,7 +18,7 @@ } #addtags_excl_list{ - width: 100%; + width: 30em; } .btn_div{ diff --git a/pages/addtags/mzta-add-tags.html b/pages/addtags/mzta-add-tags.html index 52b240e9..2c59c89a 100644 --- a/pages/addtags/mzta-add-tags.html +++ b/pages/addtags/mzta-add-tags.html @@ -23,8 +23,9 @@
- __MSG_AddTags_excl_list_title__ -
__MSG_AddTags_excl_list_infoline__ + __MSG_AddTags_excl_list_title__ +
__MSG_AddTags_excl_list_infoline__ +
__MSG_AddTags_excl_list_infoline2__

diff --git a/pages/addtags/mzta-add-tags.js b/pages/addtags/mzta-add-tags.js index 4c4aba3f..93492076 100644 --- a/pages/addtags/mzta-add-tags.js +++ b/pages/addtags/mzta-add-tags.js @@ -19,11 +19,14 @@ import { getSpecialPrompts, setSpecialPrompts } from "../../js/mzta-prompts.js"; import { getPlaceholders } from "../../js/mzta-placeholders.js"; import { textareaAutocomplete } from "../../js/mzta-placeholders-autocomplete.js"; +import { addTags_getExclusionList, addTags_setExclusionList } from "../../js/mzta-addatags-exclusion-list.js"; let autocompleteSuggestions = []; document.addEventListener('DOMContentLoaded', async () => { + i18n.updateDocument(); + let addtags_textarea = document.getElementById('addtags_prompt_text'); let addtags_save_btn = document.getElementById('btn_save_prompt'); let addtags_reset_btn = document.getElementById('btn_reset_prompt'); @@ -69,5 +72,29 @@ document.addEventListener('DOMContentLoaded', async () => { autocompleteSuggestions = (await getPlaceholders(true)).filter(p => !(p.id === 'selected_text' || p.id === 'additional_text')).map(p => ({command: '{%'+p.id+'%}', type: p.type})); textareaAutocomplete(addtags_textarea, autocompleteSuggestions, 1); // type_value = 1, only when reading an email - i18n.updateDocument(); + let excl_list_textarea = document.getElementById('addtags_excl_list'); + let excl_list_save_btn = document.getElementById('btn_save_excl_list'); + + let excl_list_value = await addTags_getExclusionList(); + let excl_list_string = excl_list_value.join('\n'); + + excl_list_textarea.value = excl_list_string; + + excl_list_textarea.addEventListener('input', (event) => { + excl_list_save_btn.disabled = (event.target.value === excl_list_string); + if(excl_list_save_btn.disabled){ + document.getElementById('excl_list_unsaved').classList.add('hidden'); + } else { + document.getElementById('excl_list_unsaved').classList.remove('hidden'); + } + }); + + excl_list_save_btn.addEventListener('click', () => { + let excl_array_new = excl_list_textarea.value.split(/[\n,]+/); + excl_array_new = Array.from(new Set(excl_array_new.map(item => item.trim().toLowerCase()))).sort(); + addTags_setExclusionList(excl_array_new); + excl_list_save_btn.disabled = true; + excl_list_textarea.value = excl_array_new.join('\n'); + }); + }); \ No newline at end of file