From 7c28c04048d126f42414167e3ca88a2389f690af Mon Sep 17 00:00:00 2001 From: Ashik K Date: Fri, 17 Oct 2025 12:42:42 +0200 Subject: [PATCH] Fix tvOS navigation - use push everywhere except Media tab channels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- Shared/Coordinators/HomeCoordinator.swift | 10 ---------- Shared/Coordinators/LibraryCoordinator.swift | 10 +--------- Shared/Coordinators/MediaCoordinator.swift | 4 ++-- Shared/Coordinators/SearchCoordinator.swift | 10 +--------- 4 files changed, 4 insertions(+), 30 deletions(-) diff --git a/Shared/Coordinators/HomeCoordinator.swift b/Shared/Coordinators/HomeCoordinator.swift index a631d0e4..9e0ee888 100644 --- a/Shared/Coordinators/HomeCoordinator.swift +++ b/Shared/Coordinators/HomeCoordinator.swift @@ -30,15 +30,6 @@ final class HomeCoordinator: NavigationCoordinatable { var library = makeLibrary #endif - #if os(tvOS) - func makeItem(item: BaseItemDto) -> NavigationViewCoordinator { - NavigationViewCoordinator(ItemCoordinator(item: item)) - } - - func makeLibrary(viewModel: PagingLibraryViewModel) -> NavigationViewCoordinator> { - NavigationViewCoordinator(LibraryCoordinator(viewModel: viewModel)) - } - #else func makeItem(item: BaseItemDto) -> ItemCoordinator { ItemCoordinator(item: item) } @@ -46,7 +37,6 @@ final class HomeCoordinator: NavigationCoordinatable { func makeLibrary(viewModel: PagingLibraryViewModel) -> LibraryCoordinator { LibraryCoordinator(viewModel: viewModel) } - #endif @ViewBuilder func makeStart() -> some View { diff --git a/Shared/Coordinators/LibraryCoordinator.swift b/Shared/Coordinators/LibraryCoordinator.swift index 985c381f..f13fbe9f 100644 --- a/Shared/Coordinators/LibraryCoordinator.swift +++ b/Shared/Coordinators/LibraryCoordinator.swift @@ -44,15 +44,6 @@ final class LibraryCoordinator: NavigationCoordinatable { PagingLibraryView(viewModel: viewModel) } - #if os(tvOS) - func makeItem(item: BaseItemDto) -> NavigationViewCoordinator { - NavigationViewCoordinator(ItemCoordinator(item: item)) - } - - func makeLibrary(viewModel: PagingLibraryViewModel) -> NavigationViewCoordinator> { - NavigationViewCoordinator(LibraryCoordinator(viewModel: viewModel)) - } - #else func makeItem(item: BaseItemDto) -> ItemCoordinator { ItemCoordinator(item: item) } @@ -61,6 +52,7 @@ final class LibraryCoordinator: NavigationCoordinatable { LibraryCoordinator(viewModel: viewModel) } + #if !os(tvOS) func makeFilter(parameters: FilterCoordinator.Parameters) -> NavigationViewCoordinator { NavigationViewCoordinator(FilterCoordinator(parameters: parameters)) } diff --git a/Shared/Coordinators/MediaCoordinator.swift b/Shared/Coordinators/MediaCoordinator.swift index 60e91280..8322daee 100644 --- a/Shared/Coordinators/MediaCoordinator.swift +++ b/Shared/Coordinators/MediaCoordinator.swift @@ -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) diff --git a/Shared/Coordinators/SearchCoordinator.swift b/Shared/Coordinators/SearchCoordinator.swift index bd40e8a9..3746781f 100644 --- a/Shared/Coordinators/SearchCoordinator.swift +++ b/Shared/Coordinators/SearchCoordinator.swift @@ -31,15 +31,6 @@ final class SearchCoordinator: NavigationCoordinatable { var filter = makeFilter #endif - #if os(tvOS) - func makeItem(item: BaseItemDto) -> NavigationViewCoordinator { - NavigationViewCoordinator(ItemCoordinator(item: item)) - } - - func makeLibrary(viewModel: PagingLibraryViewModel) -> NavigationViewCoordinator> { - 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 { NavigationViewCoordinator(FilterCoordinator(parameters: parameters)) }