俞可 · YU KE
1 month ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with
24 additions and
3 deletions
-
.changeset/calm-themes-reset.md
-
packages/@core/preferences/__tests__/preferences.test.ts
-
packages/@core/preferences/src/preferences.ts
|
|
@ -0,0 +1,5 @@ |
|
|
|
|
|
--- |
|
|
|
|
|
'@vben-core/preferences': patch |
|
|
|
|
|
--- |
|
|
|
|
|
|
|
|
|
|
|
fix: apply preference reset theme updates before cache persistence |
|
|
@ -157,6 +157,22 @@ describe('preferences', () => { |
|
|
expect(preferenceManager.getPreferences()).toEqual(defaultPreferences); |
|
|
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', () => { |
|
|
it('updates isMobile correctly', () => { |
|
|
// 模拟移动端状态
|
|
|
// 模拟移动端状态
|
|
|
vi.stubGlobal( |
|
|
vi.stubGlobal( |
|
|
|
|
|
@ -177,11 +177,11 @@ class PreferenceManager { |
|
|
Object.assign(this.state, this.initialPreferences); |
|
|
Object.assign(this.state, this.initialPreferences); |
|
|
this.replaceCustomPreferences(this.initialCustomPreferences); |
|
|
this.replaceCustomPreferences(this.initialCustomPreferences); |
|
|
|
|
|
|
|
|
// 保存偏好设置至缓存
|
|
|
|
|
|
await this.saveToCache(); |
|
|
|
|
|
|
|
|
|
|
|
// 直接触发 UI 更新
|
|
|
// 直接触发 UI 更新
|
|
|
this.handleUpdates(this.state); |
|
|
this.handleUpdates(this.state); |
|
|
|
|
|
|
|
|
|
|
|
// 保存偏好设置至缓存
|
|
|
|
|
|
await this.saveToCache(); |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
|