From 418435957e89c7917eb84de43fa6a33cc38b51dd Mon Sep 17 00:00:00 2001 From: Ibrahim Sulejmenov Date: Tue, 18 Mar 2025 21:36:26 +0100 Subject: [PATCH] Implemented season seperator for tv shows 2 --- Sora/Views/MediaInfoView/MediaInfoView.swift | 42 +++++++------------- 1 file changed, 14 insertions(+), 28 deletions(-) diff --git a/Sora/Views/MediaInfoView/MediaInfoView.swift b/Sora/Views/MediaInfoView/MediaInfoView.swift index 5ce7cb2..02a8499 100644 --- a/Sora/Views/MediaInfoView/MediaInfoView.swift +++ b/Sora/Views/MediaInfoView/MediaInfoView.swift @@ -50,14 +50,7 @@ struct MediaInfoView: View { @State private var selectedRange: Range = 0..<100 private var isGroupedBySeasons: Bool { - var lastEpisodeNumber = 0 - for episode in episodeLinks { - if episode.number == 1 && lastEpisodeNumber > 1 { - return true - } - lastEpisodeNumber = episode.number - } - return false + return groupedEpisodes().count > 1 } var body: some View { @@ -205,9 +198,7 @@ struct MediaInfoView: View { if !isGroupedBySeasons, episodeLinks.count > episodeChunkSize { Menu { ForEach(generateRanges(), id: \.self) { range in - Button(action: { - selectedRange = range - }) { + Button(action: { selectedRange = range }) { Text("\(range.lowerBound + 1)-\(range.upperBound)") } } @@ -218,12 +209,10 @@ struct MediaInfoView: View { } } else if isGroupedBySeasons { let seasons = groupedEpisodes() - if !seasons.isEmpty { + if seasons.count > 1 { Menu { ForEach(0.. 0 ? lastPlayedTime / totalTime : 0 EpisodeCell( - episodeIndex: i, + episodeIndex: selectedSeason, episode: ep.href, episodeID: ep.number - 1, progress: progress, @@ -263,13 +250,13 @@ struct MediaInfoView: View { } }, onMarkAllPrevious: { - for idx in 0.. [[EpisodeLink]] { guard !episodeLinks.isEmpty else { return [] } var groups: [[EpisodeLink]] = [] - var currentGroup: [EpisodeLink] = [] + var currentGroup: [EpisodeLink] = [episodeLinks[0]] - for ep in episodeLinks { - if let last = currentGroup.last, ep.number <= last.number { + for ep in episodeLinks.dropFirst() { + if let last = currentGroup.last, ep.number < last.number { groups.append(currentGroup) currentGroup = [ep] } else { @@ -458,11 +445,10 @@ struct MediaInfoView: View { } } - if !currentGroup.isEmpty { - groups.append(currentGroup) - } + groups.append(currentGroup) return groups } + func fetchDetails() { DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {