From 27ef1f1e71123799fbafe632e8493d88146cc41f Mon Sep 17 00:00:00 2001 From: Will Miao <13051207myq@gmail.com> Date: Fri, 13 Jun 2025 05:46:53 +0800 Subject: [PATCH] Refactor tag editing setup: improve event handler management for edit and save buttons --- static/js/components/loraModal/ModelTags.js | 32 +++++++++++++++++---- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/static/js/components/loraModal/ModelTags.js b/static/js/components/loraModal/ModelTags.js index b1769766..0b9ab0d6 100644 --- a/static/js/components/loraModal/ModelTags.js +++ b/static/js/components/loraModal/ModelTags.js @@ -13,6 +13,9 @@ const PRESET_TAGS = [ 'objects', 'animal' ]; +// Create a named function so we can remove it later +let saveTagsHandler = null; + /** * Set up tag editing mode */ @@ -23,7 +26,13 @@ export function setupTagEditMode() { // Store original tags for restoring on cancel let originalTags = []; - editBtn.addEventListener('click', function() { + // Remove any previously attached click handler + if (editBtn._hasClickHandler) { + editBtn.removeEventListener('click', editBtn._clickHandler); + } + + // Create new handler and store reference + const editBtnClickHandler = function() { const tagsSection = document.querySelector('.model-tags-container'); const isEditMode = tagsSection.classList.toggle('edit-mode'); const filePath = this.dataset.filePath; @@ -103,15 +112,28 @@ export function setupTagEditMode() { delete this.dataset.skipRestore; } } - }); + }; - // Set up save button - document.addEventListener('click', function(e) { + // Store the handler reference on the button itself + editBtn._clickHandler = editBtnClickHandler; + editBtn._hasClickHandler = true; + editBtn.addEventListener('click', editBtnClickHandler); + + // Clean up any previous document click handler + if (saveTagsHandler) { + document.removeEventListener('click', saveTagsHandler); + } + + // Create new save handler and store reference + saveTagsHandler = function(e) { if (e.target.classList.contains('save-tags-btn') || e.target.closest('.save-tags-btn')) { saveTags(); } - }); + }; + + // Add the new handler + document.addEventListener('click', saveTagsHandler); } /**