mirror of
https://github.com/yattee/yattee.git
synced 2025-08-09 04:04:07 +00:00
Initial functionality of player items queue
Fix environment objects Hide video player placeholder on tvOS Queue improvements
This commit is contained in:
@@ -2,19 +2,22 @@ import Defaults
|
||||
import SwiftUI
|
||||
|
||||
struct Player: NSViewControllerRepresentable {
|
||||
var video: Video!
|
||||
@EnvironmentObject<PlayerModel> private var player
|
||||
|
||||
@EnvironmentObject<InvidiousAPI> private var api
|
||||
@EnvironmentObject<PlaybackModel> private var playback
|
||||
var controller: PlayerViewController?
|
||||
|
||||
init(controller: PlayerViewController? = nil) {
|
||||
self.controller = controller
|
||||
}
|
||||
|
||||
func makeNSViewController(context _: Context) -> PlayerViewController {
|
||||
if self.controller != nil {
|
||||
return self.controller!
|
||||
}
|
||||
|
||||
let controller = PlayerViewController()
|
||||
|
||||
controller.video = video
|
||||
controller.playback = playback
|
||||
controller.api = api
|
||||
|
||||
controller.resolution = Defaults[.quality]
|
||||
controller.playerModel = player
|
||||
|
||||
return controller
|
||||
}
|
||||
|
@@ -2,42 +2,20 @@ import AVKit
|
||||
import SwiftUI
|
||||
|
||||
final class PlayerViewController: NSViewController {
|
||||
var video: Video!
|
||||
|
||||
var api: InvidiousAPI!
|
||||
var player = AVPlayer()
|
||||
var playerModel: PlayerModel!
|
||||
var playback: PlaybackModel!
|
||||
var playerView = AVPlayerView()
|
||||
var resolution: Stream.ResolutionSetting!
|
||||
|
||||
override func viewDidDisappear() {
|
||||
playerView.player?.replaceCurrentItem(with: nil)
|
||||
playerView.player = nil
|
||||
|
||||
playerModel.player = nil
|
||||
playerModel = nil
|
||||
|
||||
// TODO: pause on disappear settings
|
||||
super.viewDidDisappear()
|
||||
}
|
||||
|
||||
override func loadView() {
|
||||
playerModel = PlayerModel(playback: playback, api: api, resolution: resolution)
|
||||
|
||||
guard playerModel.player.isNil else {
|
||||
return
|
||||
}
|
||||
|
||||
playerModel.player = player
|
||||
playerView.player = playerModel.player
|
||||
|
||||
playerView.allowsPictureInPicturePlayback = true
|
||||
playerView.showsFullScreenToggleButton = true
|
||||
|
||||
view = playerView
|
||||
|
||||
DispatchQueue.main.async {
|
||||
self.playerModel.loadVideo(self.video)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user