Overlay: block new sessions while sending; delay runtime restart
This commit is contained in:
@@ -359,7 +359,7 @@ actor VoiceWakeRuntime {
|
||||
self.overlayToken = nil
|
||||
|
||||
self.cooldownUntil = Date().addingTimeInterval(self.debounceAfterSend)
|
||||
self.restartRecognizer()
|
||||
self.scheduleRestartRecognizer()
|
||||
}
|
||||
|
||||
// MARK: - Audio level handling
|
||||
@@ -406,6 +406,18 @@ actor VoiceWakeRuntime {
|
||||
}
|
||||
}
|
||||
|
||||
private func scheduleRestartRecognizer(delay: TimeInterval = 0.7) {
|
||||
Task { [weak self] in
|
||||
let nanos = UInt64(max(0, delay) * 1_000_000_000)
|
||||
try? await Task.sleep(nanoseconds: nanos)
|
||||
guard let self else { return }
|
||||
if self.isCapturing { return }
|
||||
let overlayVisible = await MainActor.run { VoiceWakeOverlayController.shared.isVisible }
|
||||
if overlayVisible { return }
|
||||
self.restartRecognizer()
|
||||
}
|
||||
}
|
||||
|
||||
func applyPushToTalkCooldown() {
|
||||
self.cooldownUntil = Date().addingTimeInterval(self.debounceAfterSend)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user