mirror of
https://github.com/yattee/yattee.git
synced 2025-08-08 19:54:07 +00:00
Settings for iOS/macOS
This commit is contained in:
@@ -1,15 +1,20 @@
|
||||
import Defaults
|
||||
import SwiftUI
|
||||
|
||||
struct Player: NSViewControllerRepresentable {
|
||||
@EnvironmentObject<PlaybackState> private var playbackState
|
||||
|
||||
var video: Video!
|
||||
|
||||
@EnvironmentObject<InvidiousAPI> private var api
|
||||
@EnvironmentObject<PlaybackModel> private var playback
|
||||
|
||||
func makeNSViewController(context _: Context) -> PlayerViewController {
|
||||
let controller = PlayerViewController()
|
||||
|
||||
controller.video = video
|
||||
controller.playbackState = playbackState
|
||||
controller.playback = playback
|
||||
controller.api = api
|
||||
|
||||
controller.resolution = Defaults[.quality]
|
||||
|
||||
return controller
|
||||
}
|
||||
|
@@ -4,36 +4,40 @@ import SwiftUI
|
||||
final class PlayerViewController: NSViewController {
|
||||
var video: Video!
|
||||
|
||||
var api: InvidiousAPI!
|
||||
var player = AVPlayer()
|
||||
var playerState: PlayerState!
|
||||
var playbackState: PlaybackState!
|
||||
var playerModel: PlayerModel!
|
||||
var playback: PlaybackModel!
|
||||
var playerView = AVPlayerView()
|
||||
var resolution: Stream.ResolutionSetting!
|
||||
|
||||
override func viewDidDisappear() {
|
||||
playerView.player?.replaceCurrentItem(with: nil)
|
||||
playerView.player = nil
|
||||
|
||||
playerState.player = nil
|
||||
playerState = nil
|
||||
playerModel.player = nil
|
||||
playerModel = nil
|
||||
|
||||
super.viewDidDisappear()
|
||||
}
|
||||
|
||||
override func loadView() {
|
||||
playerState = PlayerState(playbackState: playbackState)
|
||||
playerModel = PlayerModel(playback: playback, api: api, resolution: resolution)
|
||||
|
||||
guard playerState.player == nil else {
|
||||
guard playerModel.player == nil else {
|
||||
return
|
||||
}
|
||||
|
||||
playerState.player = player
|
||||
playerView.player = playerState.player
|
||||
playerModel.player = player
|
||||
playerView.player = playerModel.player
|
||||
|
||||
playerView.allowsPictureInPicturePlayback = true
|
||||
playerView.showsFullScreenToggleButton = true
|
||||
|
||||
view = playerView
|
||||
|
||||
playerState.loadVideo(video)
|
||||
DispatchQueue.main.async {
|
||||
self.playerModel.loadVideo(self.video)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user