From e72c5160c33541e9c19512534ff8d6a1b6e5b9ab Mon Sep 17 00:00:00 2001 From: Eric Lee Date: Wed, 17 Jan 2024 12:10:01 -0800 Subject: [PATCH] [tvOS][Bug] Fixes season selector only showing a single season. (#950) --- Shared/ViewModels/ItemViewModel/SeriesItemViewModel.swift | 8 ++++++-- .../SeriesItemView/Components/SeriesEpisodeSelector.swift | 1 - 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Shared/ViewModels/ItemViewModel/SeriesItemViewModel.swift b/Shared/ViewModels/ItemViewModel/SeriesItemViewModel.swift index 6f4fc40c..f633dd80 100644 --- a/Shared/ViewModels/ItemViewModel/SeriesItemViewModel.swift +++ b/Shared/ViewModels/ItemViewModel/SeriesItemViewModel.swift @@ -117,7 +117,7 @@ final class SeriesItemViewModel: ItemViewModel, MenuPosterHStackModel { func select(section: BaseItemDto) { self.menuSelection = section - if !menuSections.keys.contains(section) { + if let episodes = menuSections[section], episodes.isEmpty { getEpisodesForSeason(section) } } @@ -132,7 +132,11 @@ final class SeriesItemViewModel: ItemViewModel, MenuPosterHStackModel { let response = try await userSession.client.send(request) guard let seasons = response.value.items else { return } - + await MainActor.run { + for season in seasons { + self.menuSections[season] = [] + } + } if let firstSeason = seasons.first { self.getEpisodesForSeason(firstSeason) await MainActor.run { diff --git a/Swiftfin tvOS/Views/ItemView/SeriesItemView/Components/SeriesEpisodeSelector.swift b/Swiftfin tvOS/Views/ItemView/SeriesItemView/Components/SeriesEpisodeSelector.swift index 801fc36c..8e5a763c 100644 --- a/Swiftfin tvOS/Views/ItemView/SeriesItemView/Components/SeriesEpisodeSelector.swift +++ b/Swiftfin tvOS/Views/ItemView/SeriesItemView/Components/SeriesEpisodeSelector.swift @@ -159,7 +159,6 @@ extension SeriesEpisodeSelector { } .onChange(of: viewModel.menuSelection) { _ in lastFocusedEpisodeID = items.first?.id - wrappedScrollView?.scrollToTop(animated: false) } .onChange(of: focusedEpisodeID) { episodeIndex in guard let episodeIndex = episodeIndex else { return }