Browse Source

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

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

* chore: format preference reset changeset
pull/8343/head
俞可 · YU KE 1 month ago
committed by GitHub
parent
commit
2d7087602b
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  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