From 7e9336d55b4bb5ef57faeee2183677fc2e64a457 Mon Sep 17 00:00:00 2001 From: Francesco <100066266+cranci1@users.noreply.github.com> Date: Tue, 3 Jun 2025 18:04:50 +0200 Subject: [PATCH] Revert "Fixes (#152)" This reverts commit 8075de46fb1328fed789e0e7d8e98762e12354ac. --- Sora/Views/MediaInfoView/MediaInfoView.swift | 105 ++++++++---------- .../SettingsSubViews/SettingsViewLogger.swift | 38 ++----- 2 files changed, 55 insertions(+), 88 deletions(-) diff --git a/Sora/Views/MediaInfoView/MediaInfoView.swift b/Sora/Views/MediaInfoView/MediaInfoView.swift index b020fcb..ef0eac3 100644 --- a/Sora/Views/MediaInfoView/MediaInfoView.swift +++ b/Sora/Views/MediaInfoView/MediaInfoView.swift @@ -127,29 +127,8 @@ struct MediaInfoView: View { return nil } - private var continueWatchingText: String { - for ep in episodeLinks { - let last = UserDefaults.standard.double(forKey: "lastPlayedTime_\(ep.href)") - let total = UserDefaults.standard.double(forKey: "totalTime_\(ep.href)") - let progress = total > 0 ? last / total : 0 - - if progress > 0 && progress < 0.9 { - return "Continue Watching Episode \(ep.number)" - } - } - - for ep in episodeLinks { - let last = UserDefaults.standard.double(forKey: "lastPlayedTime_\(ep.href)") - let total = UserDefaults.standard.double(forKey: "totalTime_\(ep.href)") - let progress = total > 0 ? last / total : 0 - - if progress < 0.9 { - return "Start Watching Episode \(ep.number)" - } - } - - return "Start Watching" - } + + @State private var continueWatchingText: String = "Start Watching" var body: some View { ZStack { @@ -191,6 +170,7 @@ struct MediaInfoView: View { } } .onAppear { + updateContinueWatchingText() buttonRefreshTrigger.toggle() let savedID = UserDefaults.standard.integer(forKey: "custom_anilist_id_\(href)") @@ -285,24 +265,20 @@ struct MediaInfoView: View { ) ) .overlay( - VStack(spacing: 0) { - Spacer() - LinearGradient( - gradient: Gradient(stops: [ - .init(color: (colorScheme == .dark ? Color.black : Color.white).opacity(0.0), location: 0.0), - .init(color: (colorScheme == .dark ? Color.black : Color.white).opacity(0.5), location: 0.5), - .init(color: (colorScheme == .dark ? Color.black : Color.white).opacity(1.0), location: 1.0) - ]), - startPoint: .top, - endPoint: .bottom - ) - .frame(height: 150) - } + LinearGradient( + gradient: Gradient(stops: [ + .init(color: .clear, location: 0.0), + .init(color: .clear, location: 0.7), + .init(color: (colorScheme == .dark ? Color.black : Color.white).opacity(0.9), location: 1.0) + ]), + startPoint: .top, + endPoint: .bottom + ) ) VStack(spacing: 0) { Rectangle() .fill(Color.clear) - .frame(height: 450) + .frame(height: 400) VStack(alignment: .leading, spacing: 16) { headerSection if !episodeLinks.isEmpty { @@ -316,16 +292,15 @@ struct MediaInfoView: View { LinearGradient( gradient: Gradient(stops: [ .init(color: (colorScheme == .dark ? Color.black : Color.white).opacity(0.0), location: 0.0), - .init(color: (colorScheme == .dark ? Color.black : Color.white).opacity(0.3), location: 0.1), - .init(color: (colorScheme == .dark ? Color.black : Color.white).opacity(0.6), location: 0.3), - .init(color: (colorScheme == .dark ? Color.black : Color.white).opacity(0.9), location: 0.7), + .init(color: (colorScheme == .dark ? Color.black : Color.white).opacity(0.5), location: 0.2), + .init(color: (colorScheme == .dark ? Color.black : Color.white).opacity(0.8), location: 0.5), .init(color: (colorScheme == .dark ? Color.black : Color.white), location: 1.0) ]), startPoint: .top, endPoint: .bottom ) .clipShape(RoundedRectangle(cornerRadius: 0)) - .shadow(color: (colorScheme == .dark ? Color.black : Color.white).opacity(1), radius: 15, x: 0, y: 15) + .shadow(color: (colorScheme == .dark ? Color.black : Color.white).opacity(1), radius: 10, x: 0, y: 10) ) } .deviceScaled() @@ -636,22 +611,20 @@ struct MediaInfoView: View { .fill(Color.accentColor.opacity(0.25)) .frame(width: width, height: 48) - if progress < 0.9 { - Capsule() - .fill(Color.accentColor) - .frame(width: max(width * CGFloat(progress), 8), height: 48) - .mask( - HStack { - if progress < 0.05 && progress != 0 { - RoundedRectangle(cornerRadius: 24) - .frame(width: 8) - } else { - RoundedRectangle(cornerRadius: 24) - } - Spacer() + Capsule() + .fill(Color.accentColor) + .frame(width: max(width * CGFloat(progress), 8), height: 48) + .mask( + HStack { + if progress < 0.05 && progress != 0 { + RoundedRectangle(cornerRadius: 24) + .frame(width: 8) + } else { + RoundedRectangle(cornerRadius: 24) } - ) - } + Spacer() + } + ) } .frame(height: 48) @@ -661,7 +634,7 @@ struct MediaInfoView: View { HStack(spacing: 8) { Image(systemName: "play.fill") .foregroundColor(colorScheme == .dark ? .black : .white) - Text(continueWatchingText) + Text(latestProgressEpisode?.title ?? "Start Watching") .font(.system(size: 16, weight: .medium)) .foregroundColor(colorScheme == .dark ? .black : .white) } @@ -1037,6 +1010,24 @@ struct MediaInfoView: View { .padding(.vertical, 50) } + private func updateContinueWatchingText() { + for ep in episodeLinks { + let last = UserDefaults.standard.double(forKey: "lastPlayedTime_\(ep.href)") + let total = UserDefaults.standard.double(forKey: "totalTime_\(ep.href)") + let progress = total > 0 ? last / total : 0 + + if progress == 0 { + continueWatchingText = "Start Watching Episode \(ep.number)" + return + } else if progress < 0.9 { + continueWatchingText = "Continue Watching Episode \(ep.number)" + return + } + } + + continueWatchingText = "Start Watching" + } + private func playFirstUnwatchedEpisode() { for ep in episodeLinks { let last = UserDefaults.standard.double(forKey: "lastPlayedTime_\(ep.href)") diff --git a/Sora/Views/SettingsView/SettingsSubViews/SettingsViewLogger.swift b/Sora/Views/SettingsView/SettingsSubViews/SettingsViewLogger.swift index 4a70dc4..e0d32ee 100644 --- a/Sora/Views/SettingsView/SettingsSubViews/SettingsViewLogger.swift +++ b/Sora/Views/SettingsView/SettingsSubViews/SettingsViewLogger.swift @@ -62,18 +62,8 @@ fileprivate struct SettingsSection: View { struct SettingsViewLogger: View { @State private var logs: String = "" @State private var isLoading: Bool = true - @State private var showFullLogs: Bool = false @StateObject private var filterViewModel = LogFilterViewModel.shared - private let displayCharacterLimit = 50_000 - - var displayedLogs: String { - if showFullLogs || logs.count <= displayCharacterLimit { - return logs - } - return String(logs.suffix(displayCharacterLimit)) - } - var body: some View { ScrollView { VStack(spacing: 24) { @@ -89,26 +79,13 @@ struct SettingsViewLogger: View { .frame(maxWidth: .infinity, alignment: .center) .padding(.vertical, 20) } else { - VStack(alignment: .leading, spacing: 8) { - Text(displayedLogs) - .font(.footnote) - .foregroundColor(.secondary) - .frame(maxWidth: .infinity, alignment: .leading) - .textSelection(.enabled) - - if logs.count > displayCharacterLimit && !showFullLogs { - Button(action: { - showFullLogs = true - }) { - Text("Show More (\(logs.count - displayCharacterLimit) more characters)") - .font(.footnote) - .foregroundColor(.accentColor) - } - .padding(.top, 8) - } - } - .padding(.horizontal, 16) - .padding(.vertical, 12) + Text(logs) + .font(.footnote) + .foregroundColor(.secondary) + .frame(maxWidth: .infinity, alignment: .leading) + .padding(.horizontal, 16) + .padding(.vertical, 12) + .textSelection(.enabled) } } } @@ -162,7 +139,6 @@ struct SettingsViewLogger: View { await Logger.shared.clearLogsAsync() await MainActor.run { self.logs = "" - self.showFullLogs = false } } }