From 06787774606ff355aa939326a3152560d90c794c Mon Sep 17 00:00:00 2001 From: Cohee <18619528+Cohee1207@users.noreply.github.com> Date: Thu, 21 Mar 2024 20:12:36 +0200 Subject: [PATCH] Preserve selected prompt index on render --- public/scripts/PromptManager.js | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/public/scripts/PromptManager.js b/public/scripts/PromptManager.js index 888a912f1..cc0beac7b 100644 --- a/public/scripts/PromptManager.js +++ b/public/scripts/PromptManager.js @@ -1303,6 +1303,11 @@ class PromptManager { * Empties, then re-assembles the container containing the prompt list. */ renderPromptManager() { + let selectedPromptIndex = 0; + const existingAppendSelect = document.getElementById(`${this.configuration.prefix}prompt_manager_footer_append_prompt`); + if (existingAppendSelect instanceof HTMLSelectElement) { + selectedPromptIndex = existingAppendSelect.selectedIndex; + } const promptManagerDiv = this.containerElement; promptManagerDiv.innerHTML = ''; @@ -1332,13 +1337,21 @@ class PromptManager { if (null !== this.activeCharacter) { const prompts = [...this.serviceSettings.prompts] .filter(prompt => prompt && !prompt?.system_prompt) - .sort((promptA, promptB) => promptA.name.localeCompare(promptB.name)) - .reduce((acc, prompt) => acc + ``, ''); + .sort((promptA, promptB) => promptA.name.localeCompare(promptB.name)); + const promptsHtml = prompts.reduce((acc, prompt) => acc + ``, ''); + + if (selectedPromptIndex > 0) { + selectedPromptIndex = Math.min(selectedPromptIndex, prompts.length - 1); + } + + if (selectedPromptIndex === -1 && prompts.length) { + selectedPromptIndex = 0; + } const footerHtml = ` - ${'global' === this.configuration.promptOrder.strategy ? '' : exportForCharacter } + ${'global' === this.configuration.promptOrder.strategy ? '' : exportForCharacter} `;