diff --git a/BookPlayer/Library/ItemList/Views/ItemProgressView.swift b/BookPlayer/Library/ItemList/Views/ItemProgressView.swift index 0590dc40a..671823346 100644 --- a/BookPlayer/Library/ItemList/Views/ItemProgressView.swift +++ b/BookPlayer/Library/ItemList/Views/ItemProgressView.swift @@ -33,12 +33,14 @@ struct ItemProgressView: View { .onReceive( playerManager.currentProgressPublisher() .filter { $0.0 == item.relativePath } + .throttle(for: .seconds(1), scheduler: DispatchQueue.main, latest: true) ) { (_, progress) in self.progress = progress } .onReceive( libraryService.immediateProgressUpdatePublisher .filter { item.relativePath == $0["relativePath"] as? String } + .throttle(for: .seconds(1), scheduler: DispatchQueue.main, latest: true) ) { params in if let percentCompleted = params["percentCompleted"] as? Double { self.progress = percentCompleted / 100 diff --git a/BookPlayer/Player/ViewModels/PlayerViewModel.swift b/BookPlayer/Player/ViewModels/PlayerViewModel.swift index 57c98da09..c050c51d6 100644 --- a/BookPlayer/Player/ViewModels/PlayerViewModel.swift +++ b/BookPlayer/Player/ViewModels/PlayerViewModel.swift @@ -223,7 +223,7 @@ final class PlayerViewModel: ObservableObject { self.playingProgressSubscriber?.cancel() self.playingProgressSubscriber = NotificationCenter.default.publisher(for: .bookPlaying) - .receive(on: DispatchQueue.main) + .throttle(for: .milliseconds(500), scheduler: DispatchQueue.main, latest: true) .sink { [weak self] _ in guard let self = self else { return } self.recalculateProgress() @@ -231,7 +231,7 @@ final class PlayerViewModel: ObservableObject { self.listeningProgressSubscriber?.cancel() self.listeningProgressSubscriber = NotificationCenter.default.publisher(for: .listeningProgressChanged) - .receive(on: DispatchQueue.main) + .throttle(for: .milliseconds(500), scheduler: DispatchQueue.main, latest: true) .sink { [weak self] _ in guard let self = self else { return } self.recalculateProgress()