From 2cf79b3c9fa864c135566272505c117f87f47e44 Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Tue, 25 Aug 2026 10:49:58 +0800 Subject: [PATCH] fix(editor): persist transaction mode changes --- apps/desktop/src/stores/queryStore.ts | 1 + packages/app-tests/queryStore.test.ts | 26 +++++++++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/apps/desktop/src/stores/queryStore.ts b/apps/desktop/src/stores/queryStore.ts index 08bd4fdbbc..6bcbed5468 100644 --- a/apps/desktop/src/stores/queryStore.ts +++ b/apps/desktop/src/stores/queryStore.ts @@ -1687,6 +1687,7 @@ export const useQueryStore = defineStore("query", () => { whereInput: t.whereInput, pinned: t.pinned, mode: t.mode, + autoCommit: t.autoCommit, resultAutoSave: t.resultAutoSave, structureTableName: t.structureTableName, objectBrowser: t.objectBrowser, diff --git a/packages/app-tests/queryStore.test.ts b/packages/app-tests/queryStore.test.ts index 5997e6c490..99569461e1 100644 --- a/packages/app-tests/queryStore.test.ts +++ b/packages/app-tests/queryStore.test.ts @@ -1,5 +1,5 @@ import { strict as assert } from "node:assert"; -import { afterEach, test } from "vitest"; +import { afterEach, test, vi } from "vitest"; import { createPinia, disposePinia, getActivePinia, setActivePinia } from "pinia"; import { isReactive, nextTick, toRaw } from "vue"; import { decodeQueryResultArchive } from "../../apps/desktop/src/lib/query/queryResultArchive.ts"; @@ -323,6 +323,30 @@ test("legacy Oracle query tabs restore with the auto-commit default", async () = } }); +test("transaction mode changes persist without another tab mutation", async () => { + const restoreStorage = installMemoryStorage(); + vi.useFakeTimers(); + try { + setActivePinia(createPinia()); + let store = useQueryStore(); + const tabId = store.createTab("conn-1", "db", "Query"); + await store.flushPendingPersist(); + + store.setAutoCommit(tabId, false); + await nextTick(); + await vi.advanceTimersByTimeAsync(300); + + setActivePinia(createPinia()); + store = useQueryStore(); + await store.initOpenTabs(); + + assert.equal(store.tabs.find((tab) => tab.id === tabId)?.autoCommit, false); + } finally { + vi.useRealTimers(); + restoreStorage(); + } +}); + test("clean saved SQL tabs persist without duplicating SQL text", async () => { const restoreStorage = installMemoryStorage(); try {