From 74ab98ec38ed41e94d60c528bc8966d6b6442a82 Mon Sep 17 00:00:00 2001 From: shine1i Date: Mon, 13 Apr 2026 14:49:21 +0200 Subject: [PATCH] fix chat delete sync --- .../src/features/chat/chat-settings-sheet.tsx | 13 ++++++++++--- .../src/features/chat/runtime-provider.tsx | 3 +++ .../features/chat/utils/delete-thread-message.ts | 16 +++++++++++----- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/studio/frontend/src/features/chat/chat-settings-sheet.tsx b/studio/frontend/src/features/chat/chat-settings-sheet.tsx index 89a919b964..823a99b697 100644 --- a/studio/frontend/src/features/chat/chat-settings-sheet.tsx +++ b/studio/frontend/src/features/chat/chat-settings-sheet.tsx @@ -644,11 +644,18 @@ export function ChatSettingsPanel({ const builtinPreset = BUILTIN_PRESETS.find( (preset) => preset.name === name, ); - if (!builtinPreset) { - setActivePreset("Default"); + const fallbackPreset = + builtinPreset ?? + BUILTIN_PRESETS.find((preset) => preset.name === "Default"); + if (fallbackPreset) { + onParamsChange({ + ...fallbackPreset.params, + checkpoint: params.checkpoint, + }); + setActivePreset(fallbackPreset.name); if (canUseStorage()) { try { - localStorage.setItem(CHAT_ACTIVE_PRESET_KEY, "Default"); + localStorage.setItem(CHAT_ACTIVE_PRESET_KEY, fallbackPreset.name); } catch { // ignore } diff --git a/studio/frontend/src/features/chat/runtime-provider.tsx b/studio/frontend/src/features/chat/runtime-provider.tsx index 024543edb9..348a0a85c4 100644 --- a/studio/frontend/src/features/chat/runtime-provider.tsx +++ b/studio/frontend/src/features/chat/runtime-provider.tsx @@ -331,6 +331,9 @@ function fallbackTitleFromUserText(userText: string): string { } function cloneContent(content: ThreadMessage["content"]): ThreadMessage["content"] { + if (typeof content === "string") { + return content; + } return Array.isArray(content) ? JSON.parse(JSON.stringify(content)) : []; diff --git a/studio/frontend/src/features/chat/utils/delete-thread-message.ts b/studio/frontend/src/features/chat/utils/delete-thread-message.ts index c56577d855..a6d6556a87 100644 --- a/studio/frontend/src/features/chat/utils/delete-thread-message.ts +++ b/studio/frontend/src/features/chat/utils/delete-thread-message.ts @@ -21,6 +21,9 @@ import { db } from "@/features/chat/db"; import type { MessageRecord } from "@/features/chat/types"; function cloneContent(content: ThreadMessage["content"]): ThreadMessage["content"] { + if (typeof content === "string") { + return content; + } return Array.isArray(content) ? JSON.parse(JSON.stringify(content)) : []; } @@ -76,12 +79,15 @@ async function syncExportedRepositoryToDexie( await db.transaction("rw", db.messages, async () => { const keepIds = new Set(exp.messages.map((x) => x.message.id)); const existing = await db.messages.where("threadId").equals(remoteId).toArray(); - await Promise.all( - existing.filter((m) => !keepIds.has(m.id)).map((m) => db.messages.delete(m.id)), - ); - await Promise.all( + const idsToDelete = existing + .filter((m) => !keepIds.has(m.id)) + .map((m) => m.id); + if (idsToDelete.length > 0) { + await db.messages.bulkDelete(idsToDelete); + } + await db.messages.bulkPut( exp.messages.map(({ message, parentId }) => - db.messages.put(exportedItemToRecord(remoteId, parentId, message)), + exportedItemToRecord(remoteId, parentId, message), ), ); });