From 83f9c1c81c0cec12e3e00181fa95b4c4b73acf56 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Mon, 12 Sep 2022 16:20:59 -0600 Subject: [PATCH] fix (#579) --- Shared/Coordinators/LibraryCoordinator.swift | 6 ++++++ Swiftfin tvOS/Views/LibraryView.swift | 19 +++++++++++++++++-- Swiftfin/Views/ItemView/ItemView.swift | 3 --- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/Shared/Coordinators/LibraryCoordinator.swift b/Shared/Coordinators/LibraryCoordinator.swift index 2c987659..287b9536 100644 --- a/Shared/Coordinators/LibraryCoordinator.swift +++ b/Shared/Coordinators/LibraryCoordinator.swift @@ -43,6 +43,8 @@ final class LibraryCoordinator: NavigationCoordinatable { #if os(tvOS) @Route(.modal) var item = makeItem + @Route(.push) + var library = makeLibrary #else @Route(.push) var item = makeItem @@ -71,6 +73,10 @@ final class LibraryCoordinator: NavigationCoordinatable { func makeItem(item: BaseItemDto) -> NavigationViewCoordinator { NavigationViewCoordinator(ItemCoordinator(item: item)) } + + func makeLibrary(parameters: LibraryCoordinator.Parameters) -> NavigationViewCoordinator { + NavigationViewCoordinator(LibraryCoordinator(parameters: parameters)) + } #else func makeItem(item: BaseItemDto) -> ItemCoordinator { ItemCoordinator(item: item) diff --git a/Swiftfin tvOS/Views/LibraryView.swift b/Swiftfin tvOS/Views/LibraryView.swift index d93a6b9d..c2cb01df 100644 --- a/Swiftfin tvOS/Views/LibraryView.swift +++ b/Swiftfin tvOS/Views/LibraryView.swift @@ -9,12 +9,13 @@ import CollectionView import Defaults import Introspect +import JellyfinAPI import SwiftUI struct LibraryView: View { @EnvironmentObject - private var libraryRouter: LibraryCoordinator.Router + private var router: LibraryCoordinator.Router @ObservedObject var viewModel: LibraryViewModel @State @@ -33,12 +34,26 @@ struct LibraryView: View { 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 private var libraryItemsView: some View { CollectionView(items: viewModel.items) { _, item, _ in PosterButton(item: item, type: libraryPosterType) .onSelect { item in - libraryRouter.route(to: \.item, item) + baseItemOnSelect(item) } } .layout { _, layoutEnvironment in diff --git a/Swiftfin/Views/ItemView/ItemView.swift b/Swiftfin/Views/ItemView/ItemView.swift index deada00f..8403f39a 100644 --- a/Swiftfin/Views/ItemView/ItemView.swift +++ b/Swiftfin/Views/ItemView/ItemView.swift @@ -44,9 +44,6 @@ struct ItemView: View { } case .person: LibraryView(viewModel: .init(parent: item, type: .person)) - case .collectionFolder: - Text("Here") -// LibraryView(viewModel: .init(parent: item, type: .folders)) default: Text(L10n.notImplementedYetWithType(item.type ?? "--")) }