mirror of
https://github.com/advplyr/audiobookshelf-app.git
synced 2026-08-27 22:04:08 +02:00
Fix player automatically starting after WebKit reload
This commit is contained in:
@@ -104,9 +104,6 @@ class AudioPlayer: NSObject {
|
||||
}
|
||||
|
||||
deinit {
|
||||
self.stopPausedTimer()
|
||||
self.removeSleepTimer()
|
||||
self.removeTimeObserver()
|
||||
self.queueObserver?.invalidate()
|
||||
self.queueItemStatusObserver?.invalidate()
|
||||
}
|
||||
@@ -133,8 +130,13 @@ class AudioPlayer: NSObject {
|
||||
// Remove observers
|
||||
self.audioPlayer.removeObserver(self, forKeyPath: #keyPath(AVPlayer.rate), context: &playerContext)
|
||||
self.audioPlayer.removeObserver(self, forKeyPath: #keyPath(AVPlayer.currentItem), context: &playerContext)
|
||||
self.removeTimeObserver()
|
||||
|
||||
NotificationCenter.default.post(name: NSNotification.Name(PlayerEvents.closed.rawValue), object: nil)
|
||||
|
||||
// Remove timers
|
||||
self.stopPausedTimer()
|
||||
self.removeSleepTimer()
|
||||
}
|
||||
|
||||
public func isInitialized() -> Bool {
|
||||
|
||||
@@ -15,10 +15,7 @@ class PlayerHandler {
|
||||
guard let session = Database.shared.getPlaybackSession(id: sessionId) else { return }
|
||||
|
||||
// Clean up the existing player
|
||||
if player != nil {
|
||||
player?.destroy()
|
||||
player = nil
|
||||
}
|
||||
resetPlayer()
|
||||
|
||||
// Cleanup and sync old sessions
|
||||
cleanupOldSessions(currentSessionId: sessionId)
|
||||
@@ -31,15 +28,11 @@ class PlayerHandler {
|
||||
player = AudioPlayer(sessionId: sessionId, playWhenReady: playWhenReady, playbackRate: playbackRate)
|
||||
}
|
||||
|
||||
public static func stopPlayback() {
|
||||
public static func stopPlayback(currentSessionId: String? = nil) {
|
||||
// Pause playback first, so we can sync our current progress
|
||||
player?.pause()
|
||||
|
||||
player?.destroy()
|
||||
player = nil
|
||||
|
||||
cleanupOldSessions(currentSessionId: nil)
|
||||
|
||||
resetPlayer()
|
||||
cleanupOldSessions(currentSessionId: currentSessionId)
|
||||
NowPlayingInfo.shared.reset()
|
||||
}
|
||||
|
||||
@@ -157,4 +150,9 @@ class PlayerHandler {
|
||||
debugPrint(error)
|
||||
}
|
||||
}
|
||||
|
||||
private static func resetPlayer() {
|
||||
player?.destroy()
|
||||
player = nil
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user