diff --git a/public/script.js b/public/script.js index 3290d4f73..fe31659dc 100644 --- a/public/script.js +++ b/public/script.js @@ -183,7 +183,7 @@ import { } from './scripts/utils.js'; import { debounce_timeout, IGNORE_SYMBOL } from './scripts/constants.js'; -import { doDailyExtensionUpdatesCheck, extension_settings, initExtensions, loadExtensionSettings, runGenerationInterceptors, saveMetadataDebounced } from './scripts/extensions.js'; +import { cancelDebouncedMetadataSave, doDailyExtensionUpdatesCheck, extension_settings, initExtensions, loadExtensionSettings, runGenerationInterceptors, saveMetadataDebounced } from './scripts/extensions.js'; import { COMMENT_NAME_DEFAULT, executeSlashCommandsOnChatInput, getSlashCommandsHelp, initDefaultSlashCommands, isExecutingCommandsFromChatInput, pauseScriptExecution, processChatSlashCommands, stopScriptExecution } from './scripts/slash-commands.js'; import { tag_map, @@ -1992,6 +1992,7 @@ export function cancelDebouncedChatSave() { export async function clearChat() { cancelDebouncedChatSave(); + cancelDebouncedMetadataSave(); closeMessageEditor(); extension_prompts = {}; if (is_delete_mode) { diff --git a/public/scripts/extensions.js b/public/scripts/extensions.js index df6e8b898..c5662a012 100644 --- a/public/scripts/extensions.js +++ b/public/scripts/extensions.js @@ -58,14 +58,20 @@ let requiresReload = false; let stateChanged = false; let saveMetadataTimeout = null; +export function cancelDebouncedMetadataSave() { + if (saveMetadataTimeout) { + console.debug('Debounced metadata save cancelled'); + clearTimeout(saveMetadataTimeout); + saveMetadataTimeout = null; + } +} + export function saveMetadataDebounced() { const context = getContext(); const groupId = context.groupId; const characterId = context.characterId; - if (saveMetadataTimeout) { - clearTimeout(saveMetadataTimeout); - } + cancelDebouncedMetadataSave(); saveMetadataTimeout = setTimeout(async () => { const newContext = getContext();