From 9438b5c4aaadbb2bf6594d2631df1c62c3c7dfbd Mon Sep 17 00:00:00 2001 From: Cohee <18619528+Cohee1207@users.noreply.github.com> Date: Sat, 17 May 2025 15:44:51 +0300 Subject: [PATCH] Cancel debounced metadata save before clearing chat --- public/script.js | 3 ++- public/scripts/extensions.js | 12 +++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) 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();