From aebd2bea4a091ef81b4ab9a3699b84c2f751e88a Mon Sep 17 00:00:00 2001 From: lucaronin Date: Sun, 26 Apr 2026 09:46:11 +0200 Subject: [PATCH] fix: refresh language settings draft --- src/components/SettingsPanel.test.tsx | 18 ++++++++++++++++++ src/components/SettingsPanel.tsx | 4 ++++ 2 files changed, 22 insertions(+) diff --git a/src/components/SettingsPanel.test.tsx b/src/components/SettingsPanel.test.tsx index 633834eb..907234e8 100644 --- a/src/components/SettingsPanel.test.tsx +++ b/src/components/SettingsPanel.test.tsx @@ -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( + + ) + + rerender( + + ) + + expect(screen.getByText('设置')).toBeInTheDocument() + expect(screen.queryByText('Settings')).not.toBeInTheDocument() + }) + it('calls onSave with stable defaults on save', () => { render( diff --git a/src/components/SettingsPanel.tsx b/src/components/SettingsPanel.tsx index 3b6f8548..d16a1e0d 100644 --- a/src/components/SettingsPanel.tsx +++ b/src/components/SettingsPanel.tsx @@ -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('[data-settings-autofocus="true"]')