From 1b9f0850e8151fad20f7b9ee885e9a9e6d4493a3 Mon Sep 17 00:00:00 2001 From: Momentry Studio Date: Tue, 27 Oct 2026 17:06:02 +0800 Subject: [PATCH] feat: add Save Session button MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Added 💾 Save button to history header - saveCurrentSession saves all messages to current session - If no session exists, creates one with timestamp name - Saved sessions appear in history list for selection --- src/views/SearchView.vue | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/views/SearchView.vue b/src/views/SearchView.vue index 0ad0f55..8e33ac8 100644 --- a/src/views/SearchView.vue +++ b/src/views/SearchView.vue @@ -31,6 +31,7 @@
History
+
@@ -748,6 +749,45 @@ async function startNewChat() { } } +async function saveCurrentSession() { + if (messages.value.length === 0) { + alert('No messages to save') + return + } + + // If no current session, create one + if (!currentSession.value) { + const now = new Date() + const timeStr = `${now.getFullYear()}/${(now.getMonth()+1).toString().padStart(2,'0')}/${now.getDate().toString().padStart(2,'0')} ${now.getHours().toString().padStart(2,'0')}:${now.getMinutes().toString().padStart(2,'0')}` + const newSession = await createSession(timeStr, mode.value) + if (newSession) { + setCurrentSession(newSession) + } + } + + // Save all messages to current session + if (currentSession.value) { + for (const msg of messages.value) { + if (msg.role === 'user' && msg.query) { + await saveMessage(currentSession.value.id, { + role: 'user', + content: msg.query, + mode: msg.mode || mode.value + }) + } else if (msg.role === 'assistant') { + await saveMessage(currentSession.value.id, { + role: 'assistant', + content: msg.message || msg.answer || '', + mode: msg.mode || mode.value, + results: msg.results + }) + } + } + await loadSessions() + alert('Session saved!') + } +} + function toggleSessionMenu(id: string) { activeSessionMenu.value = activeSessionMenu.value === id ? null : id }