mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-06-14 10:29:52 +08:00
🐛 fix(store): 修复启动最大化设置未及时持久化的问题
- 为 startupFullscreen 增加即时持久化补写 - 避免用户修改设置后立即退出导致下次启动仍按旧窗口状态恢复 - 补充回归测试覆盖立即重启场景
This commit is contained in:
@@ -1 +1 @@
|
||||
0295a42fd931778d85157816d79d29e5
|
||||
d0464f9da25e9356e61652e638c99ffe
|
||||
@@ -1062,6 +1062,19 @@ describe('store appearance persistence', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('persists startup fullscreen immediately so next launch does not miss maximize preference', async () => {
|
||||
const { useStore } = await importStore();
|
||||
|
||||
useStore.getState().setStartupFullscreen(true);
|
||||
|
||||
const persisted = JSON.parse(storage.getItem('lite-db-storage') || '{}');
|
||||
expect(persisted.state.startupFullscreen).toBe(true);
|
||||
|
||||
vi.resetModules();
|
||||
const reloaded = await importStore();
|
||||
expect(reloaded.useStore.getState().startupFullscreen).toBe(true);
|
||||
});
|
||||
|
||||
it('falls back to Enter when persisted AI chat send shortcut is invalid', async () => {
|
||||
storage.setItem('lite-db-storage', JSON.stringify({
|
||||
state: {
|
||||
|
||||
@@ -225,6 +225,36 @@ const createDebouncedPersistStorage = <S>(
|
||||
};
|
||||
};
|
||||
|
||||
const writePersistedStatePatch = (
|
||||
patch: Record<string, unknown>,
|
||||
): void => {
|
||||
if (typeof localStorage === "undefined") {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
const payload = localStorage.getItem(PERSIST_STORAGE_KEY);
|
||||
const raw =
|
||||
payload && payload.trim() !== ""
|
||||
? (JSON.parse(payload) as Record<string, unknown>)
|
||||
: {};
|
||||
const state = unwrapPersistedAppState(raw);
|
||||
localStorage.setItem(
|
||||
PERSIST_STORAGE_KEY,
|
||||
JSON.stringify({
|
||||
...raw,
|
||||
state: {
|
||||
...state,
|
||||
...patch,
|
||||
},
|
||||
version:
|
||||
typeof raw.version === "number" ? raw.version : PERSIST_VERSION,
|
||||
}),
|
||||
);
|
||||
} catch {
|
||||
// ignore
|
||||
}
|
||||
};
|
||||
|
||||
const resolveOceanBaseProtocol = (
|
||||
raw: Record<string, unknown>,
|
||||
normalizedConnectionParams: string,
|
||||
@@ -2654,7 +2684,11 @@ export const useStore = create<AppState>()(
|
||||
})),
|
||||
setUiScale: (scale) => set({ uiScale: sanitizeUiScale(scale) }),
|
||||
setFontSize: (size) => set({ fontSize: sanitizeFontSize(size) }),
|
||||
setStartupFullscreen: (enabled) => set({ startupFullscreen: !!enabled }),
|
||||
setStartupFullscreen: (enabled) => {
|
||||
const nextValue = !!enabled;
|
||||
set({ startupFullscreen: nextValue });
|
||||
writePersistedStatePatch({ startupFullscreen: nextValue });
|
||||
},
|
||||
setGlobalProxy: (proxy) =>
|
||||
set((state) => ({
|
||||
globalProxy: sanitizeGlobalProxy({ ...state.globalProxy, ...proxy }),
|
||||
|
||||
Reference in New Issue
Block a user