mirror of
https://github.com/yattee/yattee.git
synced 2025-08-09 20:24:06 +00:00
Player controls UI changes
WIP on controls Chapters working Add previews variable Add lists ids WIP
This commit is contained in:
42
Model/NetworkStateModel.swift
Normal file
42
Model/NetworkStateModel.swift
Normal file
@@ -0,0 +1,42 @@
|
||||
import Foundation
|
||||
|
||||
final class NetworkStateModel: ObservableObject {
|
||||
@Published var pausedForCache = false
|
||||
@Published var cacheDuration = 0.0
|
||||
@Published var bufferingState = 0.0
|
||||
|
||||
var player: PlayerModel!
|
||||
|
||||
var fullStateText: String? {
|
||||
guard let bufferingStateText = bufferingStateText,
|
||||
let cacheDurationText = cacheDurationText
|
||||
else {
|
||||
return nil
|
||||
}
|
||||
|
||||
return "\(bufferingStateText) (\(cacheDurationText))"
|
||||
}
|
||||
|
||||
var bufferingStateText: String? {
|
||||
guard detailsAvailable else { return nil }
|
||||
return String(format: "%.0f%%", bufferingState)
|
||||
}
|
||||
|
||||
var cacheDurationText: String? {
|
||||
guard detailsAvailable else { return nil }
|
||||
return String(format: "%.2fs", cacheDuration)
|
||||
}
|
||||
|
||||
var detailsAvailable: Bool {
|
||||
guard let player = player else { return false }
|
||||
return player.activeBackend.supportsNetworkStateBufferingDetails
|
||||
}
|
||||
|
||||
var needsUpdates: Bool {
|
||||
if let player = player {
|
||||
return pausedForCache || player.isSeeking || player.isLoadingVideo
|
||||
}
|
||||
|
||||
return pausedForCache
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user