This commit is contained in:
Ethan Pippin 2022-09-12 16:20:59 -06:00 committed by GitHub
parent f13d734c76
commit 83f9c1c81c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 5 deletions

View File

@ -43,6 +43,8 @@ final class LibraryCoordinator: NavigationCoordinatable {
#if os(tvOS) #if os(tvOS)
@Route(.modal) @Route(.modal)
var item = makeItem var item = makeItem
@Route(.push)
var library = makeLibrary
#else #else
@Route(.push) @Route(.push)
var item = makeItem var item = makeItem
@ -71,6 +73,10 @@ final class LibraryCoordinator: NavigationCoordinatable {
func makeItem(item: BaseItemDto) -> NavigationViewCoordinator<ItemCoordinator> { func makeItem(item: BaseItemDto) -> NavigationViewCoordinator<ItemCoordinator> {
NavigationViewCoordinator(ItemCoordinator(item: item)) NavigationViewCoordinator(ItemCoordinator(item: item))
} }
func makeLibrary(parameters: LibraryCoordinator.Parameters) -> NavigationViewCoordinator<LibraryCoordinator> {
NavigationViewCoordinator(LibraryCoordinator(parameters: parameters))
}
#else #else
func makeItem(item: BaseItemDto) -> ItemCoordinator { func makeItem(item: BaseItemDto) -> ItemCoordinator {
ItemCoordinator(item: item) ItemCoordinator(item: item)

View File

@ -9,12 +9,13 @@
import CollectionView import CollectionView
import Defaults import Defaults
import Introspect import Introspect
import JellyfinAPI
import SwiftUI import SwiftUI
struct LibraryView: View { struct LibraryView: View {
@EnvironmentObject @EnvironmentObject
private var libraryRouter: LibraryCoordinator.Router private var router: LibraryCoordinator.Router
@ObservedObject @ObservedObject
var viewModel: LibraryViewModel var viewModel: LibraryViewModel
@State @State
@ -33,12 +34,26 @@ struct LibraryView: View {
L10n.noResults.text L10n.noResults.text
} }
private func baseItemOnSelect(_ item: BaseItemDto) {
if let baseParent = viewModel.parent as? BaseItemDto {
if baseParent.collectionType == "folders" {
router.route(to: \.library, .init(parent: item, type: .folders, filters: .init()))
} else if item.type == .folder {
router.route(to: \.library, .init(parent: item, type: .library, filters: .init()))
} else {
router.route(to: \.item, item)
}
} else {
router.route(to: \.item, item)
}
}
@ViewBuilder @ViewBuilder
private var libraryItemsView: some View { private var libraryItemsView: some View {
CollectionView(items: viewModel.items) { _, item, _ in CollectionView(items: viewModel.items) { _, item, _ in
PosterButton(item: item, type: libraryPosterType) PosterButton(item: item, type: libraryPosterType)
.onSelect { item in .onSelect { item in
libraryRouter.route(to: \.item, item) baseItemOnSelect(item)
} }
} }
.layout { _, layoutEnvironment in .layout { _, layoutEnvironment in

View File

@ -44,9 +44,6 @@ struct ItemView: View {
} }
case .person: case .person:
LibraryView(viewModel: .init(parent: item, type: .person)) LibraryView(viewModel: .init(parent: item, type: .person))
case .collectionFolder:
Text("Here")
// LibraryView(viewModel: .init(parent: item, type: .folders))
default: default:
Text(L10n.notImplementedYetWithType(item.type ?? "--")) Text(L10n.notImplementedYetWithType(item.type ?? "--"))
} }