Replace environment objects with observed objects

This commit is contained in:
Arkadiusz Fal
2022-11-24 21:36:05 +01:00
parent 23fa0968c6
commit 0d333b5583
102 changed files with 427 additions and 723 deletions

View File

@@ -12,11 +12,11 @@ final class AVPlayerBackend: PlayerBackend {
private var logger = Logger(label: "avplayer-backend")
var model: PlayerModel! { .shared }
var controls: PlayerControlsModel! { .shared }
var playerTime: PlayerTimeModel! { .shared }
var networkState: NetworkStateModel! { .shared }
var seek: SeekModel! { .shared }
var model: PlayerModel { .shared }
var controls: PlayerControlsModel { .shared }
var playerTime: PlayerTimeModel { .shared }
var networkState: NetworkStateModel { .shared }
var seek: SeekModel { .shared }
var stream: Stream?
var video: Video?

View File

@@ -13,11 +13,11 @@ final class MPVBackend: PlayerBackend {
private var logger = Logger(label: "mpv-backend")
var model: PlayerModel! { .shared }
var controls: PlayerControlsModel! { .shared }
var playerTime: PlayerTimeModel! { .shared }
var networkState: NetworkStateModel! { .shared }
var seek: SeekModel! { .shared }
var model: PlayerModel { .shared }
var controls: PlayerControlsModel { .shared }
var playerTime: PlayerTimeModel { .shared }
var networkState: NetworkStateModel { .shared }
var seek: SeekModel { .shared }
var stream: Stream?
var video: Video?
@@ -37,9 +37,9 @@ final class MPVBackend: PlayerBackend {
return
}
self.controls?.isLoadingVideo = self.isLoadingVideo
self.controls.isLoadingVideo = self.isLoadingVideo
self.setNeedsNetworkStateUpdates(true)
self.model?.objectWillChange.send()
self.model.objectWillChange.send()
}
}}
@@ -333,7 +333,7 @@ final class MPVBackend: PlayerBackend {
isPlaying = true
startClientUpdates()
if controls?.presentingControls ?? false {
if controls.presentingControls {
startControlsUpdates()
}
@@ -428,9 +428,9 @@ final class MPVBackend: PlayerBackend {
}
private func updateControlsIsPlaying() {
guard model?.activeBackend == .mpv else { return }
guard model.activeBackend == .mpv else { return }
DispatchQueue.main.async { [weak self] in
self?.controls?.isPlaying = self?.isPlaying ?? false
self?.controls.isPlaying = self?.isPlaying ?? false
}
}
@@ -533,14 +533,11 @@ final class MPVBackend: PlayerBackend {
}
func updateNetworkState() {
guard let client, let networkState else {
return
}
DispatchQueue.main.async {
networkState.pausedForCache = client.pausedForCache
networkState.cacheDuration = client.cacheDuration
networkState.bufferingState = client.bufferingState
DispatchQueue.main.async { [weak self] in
guard let self else { return }
self.networkState.pausedForCache = self.client.pausedForCache
self.networkState.cacheDuration = self.client.cacheDuration
self.networkState.bufferingState = self.client.bufferingState
}
if !networkState.needsUpdates {

View File

@@ -312,7 +312,8 @@ final class MPVClient: ObservableObject {
}
DispatchQueue.main.async { [weak self] in
guard let self, let model = self.backend.model else { return }
guard let self else { return }
let model = self.backend.model
UIView.animate(withDuration: 0.2, animations: {
let aspectRatio = self.aspectRatio > 0 && self.aspectRatio < VideoPlayerView.defaultAspectRatio ? self.aspectRatio : VideoPlayerView.defaultAspectRatio
let height = [model.playerSize.height, model.playerSize.width / aspectRatio].min()!
@@ -329,7 +330,7 @@ final class MPVClient: ObservableObject {
self.glView?.queue.async {
self.glView.display()
}
self.backend?.controls?.objectWillChange.send()
self.backend?.controls.objectWillChange.send()
}
}
}

View File

@@ -7,10 +7,10 @@ import Foundation
protocol PlayerBackend {
var suggestedPlaybackRates: [Double] { get }
var model: PlayerModel! { get }
var controls: PlayerControlsModel! { get }
var playerTime: PlayerTimeModel! { get }
var networkState: NetworkStateModel! { get }
var model: PlayerModel { get }
var controls: PlayerControlsModel { get }
var playerTime: PlayerTimeModel { get }
var networkState: NetworkStateModel { get }
var stream: Stream? { get set }
var video: Video? { get set }