Voice wake: send or dismiss on release

main
Peter Steinberger 2025-12-09 02:25:06 +01:00
parent 3fe68a051a
commit 317f666d4c
3 changed files with 16 additions and 9 deletions

View File

@ -137,12 +137,17 @@ actor VoicePushToTalk {
let chime = finalText.isEmpty ? .none : (self.activeConfig?.sendChime ?? .none) let chime = finalText.isEmpty ? .none : (self.activeConfig?.sendChime ?? .none)
await MainActor.run { await MainActor.run {
if finalText.isEmpty {
VoiceWakeOverlayController.shared.dismiss(reason: .empty)
} else {
VoiceWakeOverlayController.shared.presentFinal( VoiceWakeOverlayController.shared.presentFinal(
transcript: finalText, transcript: finalText,
forwardConfig: forward, forwardConfig: forward,
delay: finalText.isEmpty ? 0.0 : 0.8, autoSendAfter: nil,
sendChime: chime, sendChime: chime,
attributed: attributed) attributed: attributed)
VoiceWakeOverlayController.shared.sendNow(sendChime: chime)
}
} }
self.committed = "" self.committed = ""

View File

@ -52,7 +52,7 @@ final class VoiceWakeOverlayController: ObservableObject {
func presentFinal( func presentFinal(
transcript: String, transcript: String,
forwardConfig: VoiceWakeForwardConfig, forwardConfig: VoiceWakeForwardConfig,
delay: TimeInterval, autoSendAfter delay: TimeInterval?,
sendChime: VoiceWakeChime = .none, sendChime: VoiceWakeChime = .none,
attributed: NSAttributedString? = nil) attributed: NSAttributedString? = nil)
{ {
@ -66,8 +66,10 @@ final class VoiceWakeOverlayController: ObservableObject {
self.model.attributed = attributed ?? self.makeAttributed(from: transcript) self.model.attributed = attributed ?? self.makeAttributed(from: transcript)
self.model.level = 0 self.model.level = 0
self.present() self.present()
if let delay {
self.scheduleAutoSend(after: delay, sendChime: sendChime) self.scheduleAutoSend(after: delay, sendChime: sendChime)
} }
}
func userBeganEditing() { func userBeganEditing() {
self.autoSendTask?.cancel() self.autoSendTask?.cancel()

View File

@ -316,7 +316,7 @@ actor VoiceWakeRuntime {
VoiceWakeOverlayController.shared.presentFinal( VoiceWakeOverlayController.shared.presentFinal(
transcript: finalTranscript, transcript: finalTranscript,
forwardConfig: forwardConfig, forwardConfig: forwardConfig,
delay: delay, autoSendAfter: delay,
sendChime: sendChime, sendChime: sendChime,
attributed: finalAttributed) attributed: finalAttributed)
} }