VoiceWake: sanitize triggers only when applying
This commit is contained in:
@@ -35,13 +35,8 @@ final class AppState: ObservableObject {
|
|||||||
|
|
||||||
@Published var swabbleTriggerWords: [String] {
|
@Published var swabbleTriggerWords: [String] {
|
||||||
didSet {
|
didSet {
|
||||||
// Trim user input but keep empty placeholders so the UI can show newly added rows.
|
// Preserve the raw editing state; sanitization happens when we actually use the triggers.
|
||||||
let cleaned = self.swabbleTriggerWords.map { $0.trimmingCharacters(in: .whitespacesAndNewlines) }
|
UserDefaults.standard.set(self.swabbleTriggerWords, forKey: swabbleTriggersKey)
|
||||||
UserDefaults.standard.set(cleaned, forKey: swabbleTriggersKey)
|
|
||||||
if cleaned != self.swabbleTriggerWords {
|
|
||||||
self.swabbleTriggerWords = cleaned
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if self.swabbleEnabled {
|
if self.swabbleEnabled {
|
||||||
Task { await VoiceWakeRuntime.shared.refresh(state: self) }
|
Task { await VoiceWakeRuntime.shared.refresh(state: self) }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ actor VoiceWakeRuntime {
|
|||||||
let snapshot = await MainActor.run { () -> (Bool, RuntimeConfig) in
|
let snapshot = await MainActor.run { () -> (Bool, RuntimeConfig) in
|
||||||
let enabled = state.swabbleEnabled
|
let enabled = state.swabbleEnabled
|
||||||
let config = RuntimeConfig(
|
let config = RuntimeConfig(
|
||||||
triggers: state.swabbleTriggerWords,
|
triggers: sanitizeVoiceWakeTriggers(state.swabbleTriggerWords),
|
||||||
micID: state.voiceWakeMicID.isEmpty ? nil : state.voiceWakeMicID,
|
micID: state.voiceWakeMicID.isEmpty ? nil : state.voiceWakeMicID,
|
||||||
localeID: state.voiceWakeLocaleID.isEmpty ? nil : state.voiceWakeLocaleID)
|
localeID: state.voiceWakeLocaleID.isEmpty ? nil : state.voiceWakeLocaleID)
|
||||||
return (enabled, config)
|
return (enabled, config)
|
||||||
|
|||||||
Reference in New Issue
Block a user