From e023a98f11fc52feb21e4065ec707cc98e50c7d3 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 7 Sep 2025 19:24:32 +0400 Subject: [PATCH] refac: submit suggestion prompt by default --- src/lib/components/chat/Chat.svelte | 7 +++- src/lib/components/chat/MessageInput.svelte | 38 ++++++++++++------- .../components/chat/Settings/Interface.svelte | 21 ++++++++++ 3 files changed, 51 insertions(+), 15 deletions(-) diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index ded370b4c2..e0b9a0a3c0 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -202,7 +202,12 @@ if (type === 'prompt') { // Handle prompt selection - messageInput?.setText(data); + messageInput?.setText(data, async () => { + if (!($settings?.insertSuggestionPrompt ?? false)) { + await tick(); + submitPrompt(prompt); + } + }); } }; diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index 6109767929..dbac52ad59 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -101,6 +101,7 @@ export let codeInterpreterEnabled = false; let showInputVariablesModal = false; + let inputVariablesModalCallback = (variableValues) => {}; let inputVariables = {}; let inputVariableValues = {}; @@ -122,11 +123,24 @@ codeInterpreterEnabled }); - const inputVariableHandler = async (text: string) => { + const inputVariableHandler = async (text: string): Promise => { inputVariables = extractInputVariables(text); - if (Object.keys(inputVariables).length > 0) { - showInputVariablesModal = true; + + // No variables? return the original text immediately. + if (Object.keys(inputVariables).length === 0) { + return text; } + + // Show modal and wait for the user's input. + showInputVariablesModal = true; + return await new Promise((resolve) => { + inputVariablesModalCallback = (variableValues) => { + inputVariableValues = { ...inputVariableValues, ...variableValues }; + replaceVariables(inputVariableValues); + showInputVariablesModal = false; + resolve(text); + }; + }); }; const textVariableHandler = async (text: string) => { @@ -244,7 +258,6 @@ text = text.replaceAll('{{CURRENT_WEEKDAY}}', weekday); } - inputVariableHandler(text); return text; }; @@ -280,7 +293,7 @@ } }; - export const setText = async (text?: string) => { + export const setText = async (text?: string, cb?: (text: string) => void) => { const chatInput = document.getElementById('chat-input'); if (chatInput) { @@ -296,6 +309,10 @@ chatInput.focus(); chatInput.dispatchEvent(new Event('input')); } + + text = await inputVariableHandler(text); + await tick(); + if (cb) await cb(text); } }; @@ -758,11 +775,7 @@ } ]; }; - reader.readAsDataURL( - file['type'] === 'image/heic' - ? await convertHeicToJpeg(file) - : file - ); + reader.readAsDataURL(file['type'] === 'image/heic' ? await convertHeicToJpeg(file) : file); } else { uploadFileHandler(file); } @@ -868,10 +881,7 @@ { - inputVariableValues = { ...inputVariableValues, ...variableValues }; - replaceVariables(inputVariableValues); - }} + onSave={inputVariablesModalCallback} /> {#if loaded} diff --git a/src/lib/components/chat/Settings/Interface.svelte b/src/lib/components/chat/Settings/Interface.svelte index 9c6526c1d2..c383b831bb 100644 --- a/src/lib/components/chat/Settings/Interface.svelte +++ b/src/lib/components/chat/Settings/Interface.svelte @@ -49,6 +49,7 @@ let largeTextAsFile = false; + let insertSuggestionPrompt = false; let keepFollowUpPrompts = false; let insertFollowUpPrompt = false; @@ -200,6 +201,7 @@ insertPromptAsRichText = $settings?.insertPromptAsRichText ?? false; promptAutocomplete = $settings?.promptAutocomplete ?? false; + insertSuggestionPrompt = $settings?.insertSuggestionPrompt ?? false; keepFollowUpPrompts = $settings?.keepFollowUpPrompts ?? false; insertFollowUpPrompt = $settings?.insertFollowUpPrompt ?? false; @@ -697,6 +699,25 @@ +
+
+
+ {$i18n.t('Insert Suggestion Prompt to Input')} +
+ +
+ { + saveSettings({ insertSuggestionPrompt }); + }} + /> +
+
+
+