From c7a35b11a55d3f4923c1ad88ddb159c2686e56a1 Mon Sep 17 00:00:00 2001 From: cranci1 <100066266+cranci1@users.noreply.github.com> Date: Sun, 9 Feb 2025 09:06:55 +0100 Subject: [PATCH] fixed the playback speed remeber stuff --- Sora/Utils/MediaPlayer/CustomPlayer/CustomPlayer.swift | 9 +++++++++ Sora/Utils/MediaPlayer/VideoPlayer.swift | 1 - .../SettingsSubViews/SettingsViewPlayer.swift | 4 ++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Sora/Utils/MediaPlayer/CustomPlayer/CustomPlayer.swift b/Sora/Utils/MediaPlayer/CustomPlayer/CustomPlayer.swift index 0a8cb76..d36d618 100644 --- a/Sora/Utils/MediaPlayer/CustomPlayer/CustomPlayer.swift +++ b/Sora/Utils/MediaPlayer/CustomPlayer/CustomPlayer.swift @@ -83,6 +83,7 @@ struct CustomMediaPlayer: View { } } startUpdatingCurrentTime() + setInitialPlayerRate() addPeriodicTimeObserver(fullURL: fullUrl) } .edgesIgnoringSafeArea(.all) @@ -229,6 +230,7 @@ struct CustomMediaPlayer: View { startUpdatingCurrentTime() } .onDisappear { + UserDefaults.standard.set(player.rate, forKey: "lastPlaybackSpeed") player.pause() inactivityTimer?.invalidate() if let timeObserverToken = timeObserverToken { @@ -265,6 +267,13 @@ struct CustomMediaPlayer: View { } } + private func setInitialPlayerRate() { + if UserDefaults.standard.bool(forKey: "rememberPlaySpeed") { + let lastPlayedSpeed = UserDefaults.standard.float(forKey: "lastPlaybackSpeed") + player.rate = lastPlayedSpeed > 0 ? lastPlayedSpeed : 1.0 + } + } + private func addPeriodicTimeObserver(fullURL: String) { let interval = CMTime(seconds: 1.0, preferredTimescale: CMTimeScale(NSEC_PER_SEC)) timeObserverToken = player.addPeriodicTimeObserver(forInterval: interval, queue: .main) { time in diff --git a/Sora/Utils/MediaPlayer/VideoPlayer.swift b/Sora/Utils/MediaPlayer/VideoPlayer.swift index fef2ca8..4868e3f 100644 --- a/Sora/Utils/MediaPlayer/VideoPlayer.swift +++ b/Sora/Utils/MediaPlayer/VideoPlayer.swift @@ -75,7 +75,6 @@ class VideoPlayerViewController: UIViewController { if let playbackSpeed = player?.rate { UserDefaults.standard.set(playbackSpeed, forKey: "lastPlaybackSpeed") } - player?.pause() if let timeObserverToken = timeObserverToken { player?.removeTimeObserver(timeObserverToken) diff --git a/Sora/Views/SettingsView/SettingsSubViews/SettingsViewPlayer.swift b/Sora/Views/SettingsView/SettingsSubViews/SettingsViewPlayer.swift index 4536623..63914c6 100644 --- a/Sora/Views/SettingsView/SettingsSubViews/SettingsViewPlayer.swift +++ b/Sora/Views/SettingsView/SettingsSubViews/SettingsViewPlayer.swift @@ -14,11 +14,11 @@ struct SettingsViewPlayer: View { @AppStorage("rememberPlaySpeed") private var isRememberPlaySpeed = false @AppStorage("holdSpeedPlayer") private var holdSpeedPlayer: Double = 2.0 - private let mediaPlayers = ["Default", "VLC", "OutPlayer", "Infuse", "nPlayer", "Sora"] + private let mediaPlayers = ["Default", "Sora", "VLC", "OutPlayer", "Infuse", "nPlayer"] var body: some View { Form { - Section(header: Text("Media Player"), footer: Text("The Force Landscape and HoldSpeed only work inside the default iOS player and Sora player.")) { + Section(header: Text("Media Player"), footer: Text("Some features are limited to Sora while others are limited to the Default player, such as ForceLandscape and holdSpeed.")) { HStack { Text("Media Player") Spacer()