1
0
mirror of https://github.com/yattee/yattee.git synced 2024-12-13 22:00:31 +05:30
yattee/Model/Player/PlayerQueueItem.swift
2022-10-27 18:03:57 +02:00

50 lines
1.3 KiB
Swift

import AVFoundation
import Defaults
import Foundation
struct PlayerQueueItem: Hashable, Identifiable, Defaults.Serializable {
static let bridge = PlayerQueueItemBridge()
var id = UUID()
var video: Video!
var videoID: Video.ID
var playbackTime: CMTime?
var videoDuration: TimeInterval?
static func from(_ watch: Watch, video: Video? = nil) -> Self {
.init(
video,
videoID: watch.videoID,
playbackTime: CMTime.secondsInDefaultTimescale(watch.stoppedAt),
videoDuration: watch.videoDuration
)
}
init(_ video: Video? = nil, videoID: Video.ID? = nil, playbackTime: CMTime? = nil, videoDuration: TimeInterval? = nil) {
self.video = video
self.videoID = videoID ?? video!.videoID
self.playbackTime = playbackTime
self.videoDuration = videoDuration
}
var duration: TimeInterval {
videoDuration ?? video?.length ?? .zero
}
var shouldRestartPlaying: Bool {
guard let seconds = playbackTime?.seconds else {
return false
}
return duration - seconds <= 10
}
var hasDetailsLoaded: Bool {
!video.isNil
}
func hash(into hasher: inout Hasher) {
hasher.combine(id)
}
}