VoiceWake: sanitize triggers only when applying

This commit is contained in:
Peter Steinberger
2025-12-08 20:20:56 +01:00
parent ab448988ff
commit cfdcabc8b4
2 changed files with 3 additions and 8 deletions

View File

@@ -35,13 +35,8 @@ final class AppState: ObservableObject {
@Published var swabbleTriggerWords: [String] {
didSet {
// Trim user input but keep empty placeholders so the UI can show newly added rows.
let cleaned = self.swabbleTriggerWords.map { $0.trimmingCharacters(in: .whitespacesAndNewlines) }
UserDefaults.standard.set(cleaned, forKey: swabbleTriggersKey)
if cleaned != self.swabbleTriggerWords {
self.swabbleTriggerWords = cleaned
return
}
// Preserve the raw editing state; sanitization happens when we actually use the triggers.
UserDefaults.standard.set(self.swabbleTriggerWords, forKey: swabbleTriggersKey)
if self.swabbleEnabled {
Task { await VoiceWakeRuntime.shared.refresh(state: self) }
}

View File

@@ -46,7 +46,7 @@ actor VoiceWakeRuntime {
let snapshot = await MainActor.run { () -> (Bool, RuntimeConfig) in
let enabled = state.swabbleEnabled
let config = RuntimeConfig(
triggers: state.swabbleTriggerWords,
triggers: sanitizeVoiceWakeTriggers(state.swabbleTriggerWords),
micID: state.voiceWakeMicID.isEmpty ? nil : state.voiceWakeMicID,
localeID: state.voiceWakeLocaleID.isEmpty ? nil : state.voiceWakeLocaleID)
return (enabled, config)