Start of refactor

This commit is contained in:
ronaldheft
2022-08-21 12:36:29 -04:00
parent 27d2ed2304
commit 8952cbfd20
3 changed files with 29 additions and 8 deletions
+18
View File
@@ -34,6 +34,7 @@ class AudioPlayer: NSObject {
private var audioPlayer: AVQueuePlayer
private var sessionId: String
private var timeObserverToken: Any?
private var queueObserver:NSKeyValueObservation?
private var queueItemStatusObserver:NSKeyValueObservation?
@@ -77,12 +78,14 @@ class AudioPlayer: NSObject {
self.audioPlayer.insert(item, after:self.audioPlayer.items().last)
}
setupTimeObserver()
setupQueueObserver()
setupQueueItemStatusObserver()
NSLog("Audioplayer ready")
}
deinit {
self.removeTimeObserver()
self.queueObserver?.invalidate()
self.queueItemStatusObserver?.invalidate()
destroy()
@@ -124,6 +127,21 @@ class AudioPlayer: NSObject {
return 0
}
private func setupTimeObserver() {
let timeScale = CMTimeScale(NSEC_PER_SEC)
let time = CMTime(seconds: 1, preferredTimescale: timeScale)
self.timeObserverToken = self.audioPlayer.addPeriodicTimeObserver(forInterval: time, queue: .main) { [weak self] currentTime in
NSLog("currentTime: \(currentTime)")
}
}
private func removeTimeObserver() {
if let timeObserverToken = timeObserverToken {
self.audioPlayer.removeTimeObserver(timeObserverToken)
self.timeObserverToken = nil
}
}
func setupQueueObserver() {
self.queueObserver = self.audioPlayer.observe(\.currentItem, options: [.new]) {_,_ in
let prevTrackIndex = self.currentTrackIndex
+4 -7
View File
@@ -141,23 +141,20 @@ class PlayerHandler {
public static func getPlaybackSession() -> PlaybackSession? {
guard let player = player else { return nil }
guard player.isInitialized() else { return nil }
guard let session = Database.shared.getPlaybackSession(id: player.getPlaybackSessionId()) else { return nil }
return session
}
public static func seekForward(amount: Double) {
guard let player = player else {
return
}
guard let player = player else { return }
let destinationTime = player.getCurrentTime() + amount
player.seek(destinationTime, from: "handler")
}
public static func seekBackward(amount: Double) {
guard let player = player else {
return
}
guard let player = player else { return }
let destinationTime = player.getCurrentTime() - amount
player.seek(destinationTime, from: "handler")
@@ -240,7 +237,7 @@ class PlayerHandler {
listeningTimePassedSinceLastSync = 0
// Persist items in the database and sync to the server
if session.isLocal { PlayerProgress.shared.syncFromPlayer() }
if session.isLocal { Task { await PlayerProgress.shared.syncFromPlayer() } }
Task { await PlayerProgress.shared.syncToServer() }
}
+7 -1
View File
@@ -15,8 +15,10 @@ class PlayerProgress {
private init() {}
public func syncFromPlayer() {
public func syncFromPlayer() async {
let backgroundToken = await UIApplication.shared.beginBackgroundTask(withName: "ABS:syncFromPlayer")
updateLocalMediaProgressFromLocalSession()
await UIApplication.shared.endBackgroundTask(backgroundToken)
}
public func syncToServer() async {
@@ -31,6 +33,10 @@ class PlayerProgress {
await UIApplication.shared.endBackgroundTask(backgroundToken)
}
private func updateLocalSessionFromPlayer() async {
}
private func updateLocalMediaProgressFromLocalSession() {
guard let session = PlayerHandler.getPlaybackSession() else { return }
guard session.isLocal else { return }