fix: refresh language settings draft

This commit is contained in:
lucaronin
2026-04-26 09:46:11 +02:00
parent 60238fbe78
commit aebd2bea4a
2 changed files with 22 additions and 0 deletions

View File

@@ -70,6 +70,24 @@ describe('SettingsPanel', () => {
expect(screen.getByText('Sync & Updates')).toBeInTheDocument()
})
it('updates the draft language when stored settings finish loading', () => {
const { rerender } = render(
<SettingsPanel open={true} settings={emptySettings} onSave={onSave} onClose={onClose} />
)
rerender(
<SettingsPanel
open={true}
settings={{ ...emptySettings, ui_language: 'zh-Hans' }}
onSave={onSave}
onClose={onClose}
/>
)
expect(screen.getByText('设置')).toBeInTheDocument()
expect(screen.queryByText('Settings')).not.toBeInTheDocument()
})
it('calls onSave with stable defaults on save', () => {
render(
<SettingsPanel open={true} settings={emptySettings} onSave={onSave} onClose={onClose} />

View File

@@ -248,6 +248,10 @@ function SettingsPanelInner({
const draftLocale = resolveEffectiveLocale(draft.uiLanguage, [systemLocale])
const t = createTranslator(draftLocale)
useEffect(() => {
setDraft(createSettingsDraft(settings, explicitOrganizationEnabled))
}, [explicitOrganizationEnabled, settings])
useEffect(() => {
const timer = setTimeout(() => {
const focusTarget = panelRef.current?.querySelector<HTMLElement>('[data-settings-autofocus="true"]')