Skip to content

Commit b2ea1c7

Browse files
fix(desktop): preserve cleared spoken languages (#5281)
Persist an explicit empty spoken language list so OS language defaults are not restored after reopening settings.
1 parent 3ea3abb commit b2ea1c7

2 files changed

Lines changed: 31 additions & 1 deletion

File tree

apps/desktop/src/store/tinybase/persister/settings/persister.test.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -463,6 +463,30 @@ describe("settingsPersister roundtrip", () => {
463463
expect(result.language).toEqual({});
464464
});
465465

466+
test("storeValuesToSettings preserves explicitly cleared spoken languages", () => {
467+
const [tables, values] = settingsToContent({
468+
language: {
469+
ai_language: "ko",
470+
spoken_languages: [],
471+
},
472+
});
473+
const store = createMergeableStore()
474+
.setTablesSchema(SCHEMA.table)
475+
.setValuesSchema(SCHEMA.value);
476+
store.setTables(tables);
477+
store.setValues(values);
478+
479+
const storeValues = store.getValues();
480+
const result = storeValuesToSettings(
481+
storeValues as Record<string, unknown>,
482+
{ ai_language: "ko", spoken_languages: ["ko", "en"] },
483+
);
484+
485+
expect(result.language).toEqual({
486+
spoken_languages: [],
487+
});
488+
});
489+
466490
test("storeValuesToSettings keeps language values differing from OS locale defaults", () => {
467491
const [tables, values] = settingsToContent({
468492
language: {

apps/desktop/src/store/tinybase/persister/settings/transform.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,13 @@ export function storeValuesToSettings(
170170
continue;
171171
}
172172
if ("default" in config && value === config.default) {
173-
continue;
173+
const isClearedSpokenLanguages =
174+
key === "spoken_languages" &&
175+
(languageDefaults?.spoken_languages?.length ?? 0) > 0;
176+
177+
if (!isClearedSpokenLanguages) {
178+
continue;
179+
}
174180
}
175181
if (languageDefaults) {
176182
if (

0 commit comments

Comments
 (0)