use coordinator to show player

This commit is contained in:
jhays 2021-11-18 21:06:04 -06:00
parent 7dab722cda
commit 43cd1ecc62
4 changed files with 14 additions and 4 deletions

View File

@ -10,14 +10,16 @@
import SwiftUI import SwiftUI
struct MediaPlayButtonRowView: View { struct MediaPlayButtonRowView: View {
@EnvironmentObject var itemRouter: ItemCoordinator.Router
@ObservedObject var viewModel: ItemViewModel @ObservedObject var viewModel: ItemViewModel
@State var wrappedScrollView: UIScrollView? @State var wrappedScrollView: UIScrollView?
var body: some View { var body: some View {
HStack { HStack {
VStack { VStack {
NavigationLink(destination: VideoPlayerView(item: viewModel.item).ignoresSafeArea()) { Button {
self.itemRouter.route(to: \.videoPlayer, viewModel.item)
} label: {
MediaViewActionButton(icon: "play.fill", scrollView: $wrappedScrollView) MediaViewActionButton(icon: "play.fill", scrollView: $wrappedScrollView)
} }
Text(viewModel.item.getItemProgressString() != "" ? "\(viewModel.item.getItemProgressString()) left" : L10n.play) Text(viewModel.item.getItemProgressString() != "" ? "\(viewModel.item.getItemProgressString()) left" : L10n.play)

View File

@ -7,10 +7,13 @@
* Copyright 2021 Aiden Vigue & Jellyfin Contributors * Copyright 2021 Aiden Vigue & Jellyfin Contributors
*/ */
import Stinsen
import SwiftUI import SwiftUI
import JellyfinAPI import JellyfinAPI
struct VideoPlayerView: UIViewControllerRepresentable { struct VideoPlayerView: UIViewControllerRepresentable {
@EnvironmentObject var router: VideoPlayerCoordinator.Router
var item: BaseItemDto var item: BaseItemDto
func makeUIViewController(context: Context) -> some UIViewController { func makeUIViewController(context: Context) -> some UIViewController {
@ -18,6 +21,9 @@ struct VideoPlayerView: UIViewControllerRepresentable {
let storyboard = UIStoryboard(name: "VideoPlayer", bundle: nil) let storyboard = UIStoryboard(name: "VideoPlayer", bundle: nil)
let viewController = storyboard.instantiateViewController(withIdentifier: "VideoPlayer") as! VideoPlayerViewController let viewController = storyboard.instantiateViewController(withIdentifier: "VideoPlayer") as! VideoPlayerViewController
viewController.manifest = item viewController.manifest = item
viewController.backAction = {
self.router.dismissCoordinator()
}
return viewController return viewController
} }

View File

@ -65,6 +65,7 @@ class VideoPlayerViewController: UIViewController, VideoPlayerSettingsDelegate,
var manifest: BaseItemDto = BaseItemDto() var manifest: BaseItemDto = BaseItemDto()
var playbackItem = PlaybackItem() var playbackItem = PlaybackItem()
var playSessionId: String = "" var playSessionId: String = ""
var backAction = {}
var cancellables = Set<AnyCancellable>() var cancellables = Set<AnyCancellable>()
@ -486,7 +487,7 @@ class VideoPlayerViewController: UIViewController, VideoPlayerSettingsDelegate,
self.resignFirstResponder() self.resignFirstResponder()
mediaPlayer.stop() mediaPlayer.stop()
sendStopReport() sendStopReport()
self.navigationController?.popViewController(animated: true) backAction()
} }
} }

View File

@ -26,5 +26,6 @@ final class VideoPlayerCoordinator: NavigationCoordinatable {
@ViewBuilder func makeStart() -> some View { @ViewBuilder func makeStart() -> some View {
VideoPlayerView(item: item) VideoPlayerView(item: item)
.ignoresSafeArea()
} }
} }