From 16d863a22be273f39c9d72fcb1e5eb471f59b27f Mon Sep 17 00:00:00 2001 From: Seiike <122684677+Seeike@users.noreply.github.com> Date: Fri, 6 Jun 2025 07:24:05 +0200 Subject: [PATCH] now if the user leaves mediainfoview on chunk 51-100 it will remember it and put him back the next time (#155) --- Sora/Views/MediaInfoView/MediaInfoView.swift | 48 +++++++++++++++++--- 1 file changed, 42 insertions(+), 6 deletions(-) diff --git a/Sora/Views/MediaInfoView/MediaInfoView.swift b/Sora/Views/MediaInfoView/MediaInfoView.swift index 5255d52..d9518a5 100644 --- a/Sora/Views/MediaInfoView/MediaInfoView.swift +++ b/Sora/Views/MediaInfoView/MediaInfoView.swift @@ -47,6 +47,14 @@ struct MediaInfoView: View { @AppStorage("externalPlayer") private var externalPlayer: String = "Default" @AppStorage("episodeChunkSize") private var episodeChunkSize: Int = 100 + private var selectedRangeKey: String { "selectedRangeStart_\(href)" } + private var selectedSeasonKey: String { "selectedSeason_\(href)" } + @State private var selectedRange: Range = { + let size = UserDefaults.standard.integer(forKey: "episodeChunkSize") + let chunk = size == 0 ? 100 : size + return 0.. = 0..<100 @State private var showSettingsMenu = false @State private var customAniListID: Int? @State private var showStreamLoadingView: Bool = false @@ -127,7 +134,12 @@ struct MediaInfoView: View { } if !hasFetched { - DropManager.shared.showDrop(title: "Fetching Data", subtitle: "Please wait while fetching.", duration: 0.5, icon: UIImage(systemName: "arrow.triangle.2.circlepath")) + DropManager.shared.showDrop( + title: "Fetching Data", + subtitle: "Please wait while fetching.", + duration: 0.5, + icon: UIImage(systemName: "arrow.triangle.2.circlepath") + ) fetchDetails() if let savedID = UserDefaults.standard.object(forKey: "custom_anilist_id_\(href)") as? Int { @@ -137,14 +149,22 @@ struct MediaInfoView: View { } else { fetchMetadataIDIfNeeded() } - - selectedRange = 0.. String { let isLightMode = selectedAppearance == .light || (selectedAppearance == .system && colorScheme == .light) return isLightMode @@ -1078,6 +1112,7 @@ struct MediaInfoView: View { self.airdate = item.airdate } self.episodeLinks = episodes + self.restoreSelectionState() self.isLoading = false self.isRefetching = false } @@ -1089,6 +1124,7 @@ struct MediaInfoView: View { self.airdate = item.airdate } self.episodeLinks = episodes + self.restoreSelectionState() self.isLoading = false self.isRefetching = false }