diff --git a/.changeset/calm-themes-reset.md b/.changeset/calm-themes-reset.md new file mode 100644 index 000000000..89943287b --- /dev/null +++ b/.changeset/calm-themes-reset.md @@ -0,0 +1,5 @@ +--- +"@vben-core/preferences": patch +--- + +fix: apply preference reset theme updates before cache persistence diff --git a/packages/@core/preferences/__tests__/preferences.test.ts b/packages/@core/preferences/__tests__/preferences.test.ts index 5c50792a9..767999934 100644 --- a/packages/@core/preferences/__tests__/preferences.test.ts +++ b/packages/@core/preferences/__tests__/preferences.test.ts @@ -157,6 +157,22 @@ describe('preferences', () => { expect(preferenceManager.getPreferences()).toEqual(defaultPreferences); }); + it('applies reset side effects before persisting preferences', async () => { + preferenceManager.updatePreferences({ + theme: { + mode: 'light', + }, + }); + expect(document.documentElement.classList.contains('dark')).toBe(false); + + const resetPromise = preferenceManager.resetPreferences(); + + expect(preferenceManager.getPreferences().theme.mode).toBe('dark'); + expect(document.documentElement.classList.contains('dark')).toBe(true); + + await resetPromise; + }); + it('updates isMobile correctly', () => { // 模拟移动端状态 vi.stubGlobal( diff --git a/packages/@core/preferences/src/preferences.ts b/packages/@core/preferences/src/preferences.ts index 68653dab1..0f34d0c61 100644 --- a/packages/@core/preferences/src/preferences.ts +++ b/packages/@core/preferences/src/preferences.ts @@ -177,11 +177,11 @@ class PreferenceManager { Object.assign(this.state, this.initialPreferences); this.replaceCustomPreferences(this.initialCustomPreferences); - // 保存偏好设置至缓存 - await this.saveToCache(); - // 直接触发 UI 更新 this.handleUpdates(this.state); + + // 保存偏好设置至缓存 + await this.saveToCache(); }; /**