Browse Source

fix(@vben-core/preferences): sync theme before reset persistence

pull/8336/head
kilisamemarisaaa 4 weeks ago
parent
commit
38291b18fc
  1. 5
      .changeset/calm-themes-reset.md
  2. 16
      packages/@core/preferences/__tests__/preferences.test.ts
  3. 6
      packages/@core/preferences/src/preferences.ts

5
.changeset/calm-themes-reset.md

@ -0,0 +1,5 @@
---
"@vben-core/preferences": patch
---
fix: apply preference reset theme updates before cache persistence

16
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(

6
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();
};
/**

Loading…
Cancel
Save