From 6c2333fd65a78df730782e0a583bfdb70d9e49e4 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Mon, 12 Sep 2022 14:51:24 +0800 Subject: [PATCH] Update durations when playback rate changes. Fire timer to update UI --- .../Services/AudioSession/AudioController.swift | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/apple/OmnivoreKit/Sources/Services/AudioSession/AudioController.swift b/apple/OmnivoreKit/Sources/Services/AudioSession/AudioController.swift index 57fefa5aa..9e6dd9477 100644 --- a/apple/OmnivoreKit/Sources/Services/AudioSession/AudioController.swift +++ b/apple/OmnivoreKit/Sources/Services/AudioSession/AudioController.swift @@ -200,7 +200,9 @@ public class AudioController: NSObject, ObservableObject, AVAudioPlayerDelegate @AppStorage(UserDefaultKey.textToSpeechPlaybackRate.rawValue) public var playbackRate = 1.0 { didSet { - print("setting textToSpeechPlaybackRate: ", playbackRate) + updateDurations(oldPlayback: oldValue, newPlayback: playbackRate) + unpause() + fireTimer() } } @@ -223,6 +225,12 @@ public class AudioController: NSObject, ObservableObject, AVAudioPlayerDelegate return "en-US-EricNeural" } + private func updateDurations(oldPlayback: Double, newPlayback: Double) { + if let oldDurations = durations { + durations = oldDurations.map { $0 * oldPlayback / newPlayback } + } + } + public func isLoadingItem(item: LinkedItem) -> Bool { (state == .loading || player?.currentItem?.status == .unknown) && self.item == item }