Update watch time on close item

This commit is contained in:
Arkadiusz Fal 2023-06-07 22:25:10 +02:00
parent 0328656a44
commit 6f91eedf4c
5 changed files with 9 additions and 8 deletions

View File

@ -46,11 +46,11 @@ extension PlayerModel {
} }
} }
func updateWatch(finished: Bool = false) { func updateWatch(finished: Bool = false, time: CMTime? = nil) {
guard let currentVideo, saveHistory else { return } guard let currentVideo, saveHistory else { return }
let id = currentVideo.videoID let id = currentVideo.videoID
let time = backend.currentTime let time = time ?? backend.currentTime
let seconds = time?.seconds ?? 0 let seconds = time?.seconds ?? 0
let duration = playerTime.duration.seconds let duration = playerTime.duration.seconds
if seconds < 3 { if seconds < 3 {
@ -63,7 +63,7 @@ extension PlayerModel {
let results = try? backgroundContext.fetch(watchFetchRequest) let results = try? backgroundContext.fetch(watchFetchRequest)
backgroundContext.perform { [weak self] in backgroundContext.perform { [weak self] in
guard let self, finished || self.backend.isPlaying else { guard let self, finished || time != nil || self.backend.isPlaying else {
return return
} }

View File

@ -612,7 +612,7 @@ final class AVPlayerBackend: PlayerBackend {
} }
self.timeObserverThrottle.execute { self.timeObserverThrottle.execute {
self.model.updateWatch() self.model.updateWatch(time: self.currentTime)
} }
} }
} }
@ -656,7 +656,7 @@ final class AVPlayerBackend: PlayerBackend {
#endif #endif
self.timeObserverThrottle.execute { self.timeObserverThrottle.execute {
self.model.updateWatch() self.model.updateWatch(time: self.currentTime)
} }
} }
} }

View File

@ -425,7 +425,7 @@ final class MPVBackend: PlayerBackend {
} }
timeObserverThrottle.execute { timeObserverThrottle.execute {
self.model.updateWatch() self.model.updateWatch(time: self.currentTime)
} }
} }

View File

@ -624,13 +624,14 @@ final class PlayerModel: ObservableObject {
closing = true closing = true
controls.presentingControls = false controls.presentingControls = false
self.prepareCurrentItemForHistory(finished: finished)
self.hide() self.hide()
Delay.by(0.8) { [weak self] in Delay.by(0.8) { [weak self] in
guard let self else { return } guard let self else { return }
self.closePiP() self.closePiP()
self.prepareCurrentItemForHistory(finished: finished)
withAnimation { withAnimation {
self.currentItem = nil self.currentItem = nil
} }

View File

@ -257,7 +257,7 @@ extension PlayerModel {
if let video = currentVideo, !historyVideos.contains(where: { $0 == video }) { if let video = currentVideo, !historyVideos.contains(where: { $0 == video }) {
historyVideos.append(video) historyVideos.append(video)
} }
updateWatch(finished: finished) updateWatch(finished: finished, time: backend.currentTime)
} }
if let video = currentItem.video, if let video = currentItem.video,