From 4d2c60d59b84ddc2221f33f82c588f54c21728a9 Mon Sep 17 00:00:00 2001 From: pixelpaws Date: Tue, 23 Sep 2025 22:00:20 +0800 Subject: [PATCH] fix(settings): persist language preference --- static/js/managers/SettingsManager.js | 32 ++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/static/js/managers/SettingsManager.js b/static/js/managers/SettingsManager.js index edc66526..4c9b90b4 100644 --- a/static/js/managers/SettingsManager.js +++ b/static/js/managers/SettingsManager.js @@ -1151,13 +1151,15 @@ export class SettingsManager { async saveLanguageSetting() { const element = document.getElementById('languageSelect'); if (!element) return; - + const selectedLanguage = element.value; - + try { // Use the universal save method for language (frontend-only setting) await this.saveSetting('language', selectedLanguage); - + + this.persistLanguageToLocalStorage(selectedLanguage); + // Reload the page to apply the new language window.location.reload(); @@ -1166,6 +1168,30 @@ export class SettingsManager { } } + persistLanguageToLocalStorage(language) { + const STORAGE_PREFIX = 'lora_manager_'; + + try { + const storageKey = `${STORAGE_PREFIX}settings`; + const currentSettings = localStorage.getItem(storageKey); + let parsedSettings = {}; + + if (currentSettings) { + try { + parsedSettings = JSON.parse(currentSettings) || {}; + } catch (parseError) { + console.warn('Failed to parse existing settings from localStorage, resetting to defaults'); + parsedSettings = {}; + } + } + + parsedSettings.language = language; + localStorage.setItem(storageKey, JSON.stringify(parsedSettings)); + } catch (error) { + console.warn('Failed to persist language preference to localStorage:', error); + } + } + toggleInputVisibility(button) { const input = button.parentElement.querySelector('input'); const icon = button.querySelector('i');