Ariver
2026-06-03 9a85354d8b41e05ba8729cd8f44592291de9117a
privatevoice.src/services/config_service.go
@@ -3,16 +3,26 @@
import (
   "voicesnap/internal/config"
   "voicesnap/internal/dock"
   "voicesnap/internal/language"
   "voicesnap/internal/model"
   "voicesnap/internal/startup"
)
// ConfigService provides configuration read/write methods to the frontend.
type ConfigService struct {
   cfg *config.Config
   cfg            *config.Config
   localeDetector language.SystemLocaleDetector
}
func NewConfigService(cfg *config.Config) *ConfigService {
   return &ConfigService{cfg: cfg}
   return NewConfigServiceWithDetector(cfg, language.NewSystemDetector())
}
func NewConfigServiceWithDetector(cfg *config.Config, detector language.SystemLocaleDetector) *ConfigService {
   if detector == nil {
      detector = language.NewSystemDetector()
   }
   return &ConfigService{cfg: cfg, localeDetector: detector}
}
// GetConfig returns the current configuration.
@@ -20,6 +30,28 @@
   return s.cfg
}
// GetLanguageSettings returns the configured and effective UI language.
func (s *ConfigService) GetLanguageSettings() language.LanguageSettings {
   return language.Resolve(s.cfg.LanguageMode, s.cfg.LanguageID, s.localeDetector)
}
// SetLanguageAuto makes the UI language follow the system language.
func (s *ConfigService) SetLanguageAuto() language.LanguageSettings {
   s.cfg.LanguageMode = config.LanguageModeAuto
   resolved := language.Resolve(s.cfg.LanguageMode, s.cfg.LanguageID, s.localeDetector)
   s.cfg.LanguageID = resolved.EffectiveLanguageID
   config.Save(s.cfg)
   return language.Resolve(s.cfg.LanguageMode, s.cfg.LanguageID, s.localeDetector)
}
// SetLanguageManual persists a user-selected UI language.
func (s *ConfigService) SetLanguageManual(languageID string) language.LanguageSettings {
   s.cfg.LanguageMode = config.LanguageModeManual
   s.cfg.LanguageID = model.NormalizeLanguageID(languageID)
   config.Save(s.cfg)
   return language.Resolve(s.cfg.LanguageMode, s.cfg.LanguageID, s.localeDetector)
}
// SetAutoHide sets the auto-hide indicator preference.
func (s *ConfigService) SetAutoHide(enabled bool) {
   s.cfg.AutoHide = enabled