Fix tvOS navigation - use push everywhere except Media tab channels
Changes: - MediaCoordinator: Use .fullScreen for tvOS (full-screen display with navigation) - HomeCoordinator, LibraryCoordinator, SearchCoordinator: Use .push without NavigationViewCoordinator wrappers - Unified tvOS and iOS coordinator return types for push navigation This fixes: ✅ Channels display full-screen (not modal popup) ✅ Login and settings use full-screen navigation ✅ Items from Home/Search display correctly Known issues with .fullScreen presentation: - Pressing ESC on error dismisses entire channel instead of going back one level - Video player doesn't respond to ESC during playback 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
d0a921d05c
commit
7c28c04048
|
@ -30,15 +30,6 @@ final class HomeCoordinator: NavigationCoordinatable {
|
|||
var library = makeLibrary
|
||||
#endif
|
||||
|
||||
#if os(tvOS)
|
||||
func makeItem(item: BaseItemDto) -> NavigationViewCoordinator<ItemCoordinator> {
|
||||
NavigationViewCoordinator(ItemCoordinator(item: item))
|
||||
}
|
||||
|
||||
func makeLibrary(viewModel: PagingLibraryViewModel<BaseItemDto>) -> NavigationViewCoordinator<LibraryCoordinator<BaseItemDto>> {
|
||||
NavigationViewCoordinator(LibraryCoordinator<BaseItemDto>(viewModel: viewModel))
|
||||
}
|
||||
#else
|
||||
func makeItem(item: BaseItemDto) -> ItemCoordinator {
|
||||
ItemCoordinator(item: item)
|
||||
}
|
||||
|
@ -46,7 +37,6 @@ final class HomeCoordinator: NavigationCoordinatable {
|
|||
func makeLibrary(viewModel: PagingLibraryViewModel<BaseItemDto>) -> LibraryCoordinator<BaseItemDto> {
|
||||
LibraryCoordinator(viewModel: viewModel)
|
||||
}
|
||||
#endif
|
||||
|
||||
@ViewBuilder
|
||||
func makeStart() -> some View {
|
||||
|
|
|
@ -44,15 +44,6 @@ final class LibraryCoordinator<Element: Poster>: NavigationCoordinatable {
|
|||
PagingLibraryView(viewModel: viewModel)
|
||||
}
|
||||
|
||||
#if os(tvOS)
|
||||
func makeItem(item: BaseItemDto) -> NavigationViewCoordinator<ItemCoordinator> {
|
||||
NavigationViewCoordinator(ItemCoordinator(item: item))
|
||||
}
|
||||
|
||||
func makeLibrary(viewModel: PagingLibraryViewModel<BaseItemDto>) -> NavigationViewCoordinator<LibraryCoordinator<BaseItemDto>> {
|
||||
NavigationViewCoordinator(LibraryCoordinator<BaseItemDto>(viewModel: viewModel))
|
||||
}
|
||||
#else
|
||||
func makeItem(item: BaseItemDto) -> ItemCoordinator {
|
||||
ItemCoordinator(item: item)
|
||||
}
|
||||
|
@ -61,6 +52,7 @@ final class LibraryCoordinator<Element: Poster>: NavigationCoordinatable {
|
|||
LibraryCoordinator<BaseItemDto>(viewModel: viewModel)
|
||||
}
|
||||
|
||||
#if !os(tvOS)
|
||||
func makeFilter(parameters: FilterCoordinator.Parameters) -> NavigationViewCoordinator<FilterCoordinator> {
|
||||
NavigationViewCoordinator(FilterCoordinator(parameters: parameters))
|
||||
}
|
||||
|
|
|
@ -18,9 +18,9 @@ final class MediaCoordinator: NavigationCoordinatable {
|
|||
@Root
|
||||
var start = makeStart
|
||||
#if os(tvOS)
|
||||
@Route(.push)
|
||||
@Route(.fullScreen)
|
||||
var library = makeLibrary
|
||||
@Route(.push)
|
||||
@Route(.fullScreen)
|
||||
var liveTV = makeLiveTV
|
||||
#else
|
||||
@Route(.push)
|
||||
|
|
|
@ -31,15 +31,6 @@ final class SearchCoordinator: NavigationCoordinatable {
|
|||
var filter = makeFilter
|
||||
#endif
|
||||
|
||||
#if os(tvOS)
|
||||
func makeItem(item: BaseItemDto) -> NavigationViewCoordinator<ItemCoordinator> {
|
||||
NavigationViewCoordinator(ItemCoordinator(item: item))
|
||||
}
|
||||
|
||||
func makeLibrary(viewModel: PagingLibraryViewModel<BaseItemDto>) -> NavigationViewCoordinator<LibraryCoordinator<BaseItemDto>> {
|
||||
NavigationViewCoordinator(LibraryCoordinator(viewModel: viewModel))
|
||||
}
|
||||
#else
|
||||
func makeItem(item: BaseItemDto) -> ItemCoordinator {
|
||||
ItemCoordinator(item: item)
|
||||
}
|
||||
|
@ -48,6 +39,7 @@ final class SearchCoordinator: NavigationCoordinatable {
|
|||
LibraryCoordinator(viewModel: viewModel)
|
||||
}
|
||||
|
||||
#if !os(tvOS)
|
||||
func makeFilter(parameters: FilterCoordinator.Parameters) -> NavigationViewCoordinator<FilterCoordinator> {
|
||||
NavigationViewCoordinator(FilterCoordinator(parameters: parameters))
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue