yattee/Model/Player/PlayerTimeModel.swift
Arkadiusz Fal 321c265a11 Player controls UI changes
WIP on controls

Chapters

working

Add previews variable

Add lists ids

WIP
2022-10-27 18:03:57 +02:00

51 lines
1.5 KiB
Swift

import CoreMedia
import Foundation
final class PlayerTimeModel: ObservableObject {
static let timePlaceholder = "--:--"
@Published var currentTime = CMTime.zero
@Published var duration = CMTime.zero
var player: PlayerModel?
var currentPlaybackTime: String {
if player?.currentItem.isNil ?? true || duration.seconds.isZero {
return Self.timePlaceholder
}
return currentTime.seconds.formattedAsPlaybackTime(allowZero: true) ?? Self.timePlaceholder
}
var durationPlaybackTime: String {
if player?.currentItem.isNil ?? true {
return Self.timePlaceholder
}
return duration.seconds.formattedAsPlaybackTime() ?? Self.timePlaceholder
}
var withoutSegmentsPlaybackTime: String {
guard let withoutSegmentsDuration = player?.playerItemDurationWithoutSponsorSegments?.seconds else {
return Self.timePlaceholder
}
return withoutSegmentsDuration.formattedAsPlaybackTime() ?? Self.timePlaceholder
}
var durationAndWithoutSegmentsPlaybackTime: String {
var durationAndWithoutSegmentsPlaybackTime = "\(durationPlaybackTime)"
if withoutSegmentsPlaybackTime != durationPlaybackTime {
durationAndWithoutSegmentsPlaybackTime += " (\(withoutSegmentsPlaybackTime))"
}
return durationAndWithoutSegmentsPlaybackTime
}
func reset() {
currentTime = .zero
duration = .zero
}
}