use coordinator to show player
This commit is contained in:
parent
7dab722cda
commit
43cd1ecc62
|
@ -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)
|
||||||
|
|
|
@ -7,17 +7,23 @@
|
||||||
* 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 {
|
||||||
var item: BaseItemDto
|
@EnvironmentObject var router: VideoPlayerCoordinator.Router
|
||||||
|
|
||||||
|
var item: BaseItemDto
|
||||||
|
|
||||||
func makeUIViewController(context: Context) -> some UIViewController {
|
func makeUIViewController(context: Context) -> some UIViewController {
|
||||||
|
|
||||||
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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue