From ded130a8c369ffcae42c67eab080a2aed5ddfde6 Mon Sep 17 00:00:00 2001 From: Arkadiusz Fal Date: Thu, 12 Feb 2026 05:02:41 +0100 Subject: [PATCH] Fix lock screen always showing 10s seek regardless of system controls setting --- Yattee/Services/Player/NowPlayingService.swift | 11 ++++++++++- Yattee/Services/Player/PlayerService.swift | 10 ++++++++-- .../PlayerControls/PlayerControlsSettingsView.swift | 10 ++++++++-- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/Yattee/Services/Player/NowPlayingService.swift b/Yattee/Services/Player/NowPlayingService.swift index eda028f0..9e9d9684 100644 --- a/Yattee/Services/Player/NowPlayingService.swift +++ b/Yattee/Services/Player/NowPlayingService.swift @@ -274,10 +274,19 @@ final class NowPlayingService { /// Configures remote commands based on current settings. /// Call this method when settings change to reconfigure the commands. - func configureRemoteCommands() { + func configureRemoteCommands( + mode: SystemControlsMode? = nil, + duration: SystemControlsSeekDuration? = nil + ) { // Remove existing targets to prevent duplicate handlers removeAllTargets() + // If explicit values provided, use them directly (bypasses debounce) + if let mode, let duration { + configureRemoteCommandsWithSettings(mode: mode, duration: duration) + return + } + // Read settings from active preset's cached global settings if let layoutService = playerControlsLayoutService { Task { diff --git a/Yattee/Services/Player/PlayerService.swift b/Yattee/Services/Player/PlayerService.swift index 7dfb0f2c..1099d220 100644 --- a/Yattee/Services/Player/PlayerService.swift +++ b/Yattee/Services/Player/PlayerService.swift @@ -2062,8 +2062,11 @@ final class PlayerService { /// Reconfigures system control buttons (Control Center, Lock Screen) based on current settings. /// Call this when system controls settings change. - func reconfigureSystemControls() { - nowPlayingService.configureRemoteCommands() + func reconfigureSystemControls( + mode: SystemControlsMode? = nil, + duration: SystemControlsSeekDuration? = nil + ) { + nowPlayingService.configureRemoteCommands(mode: mode, duration: duration) } /// Observer for preset changes to reconfigure system controls. @@ -2074,6 +2077,9 @@ final class PlayerService { self.playerControlsLayoutService = service nowPlayingService.playerControlsLayoutService = service + // Reconfigure with the actual saved settings now that layout service is available + nowPlayingService.configureRemoteCommands() + // Observe preset changes to reconfigure system controls presetChangeObserver = NotificationCenter.default.addObserver( forName: .playerControlsActivePresetDidChange, diff --git a/Yattee/Views/Settings/PlayerControls/PlayerControlsSettingsView.swift b/Yattee/Views/Settings/PlayerControls/PlayerControlsSettingsView.swift index 12b61849..373b3b38 100644 --- a/Yattee/Views/Settings/PlayerControls/PlayerControlsSettingsView.swift +++ b/Yattee/Views/Settings/PlayerControls/PlayerControlsSettingsView.swift @@ -519,7 +519,10 @@ private struct SystemControlsSection: View { .onChange(of: systemControlsMode) { _, newMode in guard newMode != viewModel.systemControlsMode else { return } viewModel.updateSystemControlsModeSync(newMode) - appEnvironment?.playerService.reconfigureSystemControls() + appEnvironment?.playerService.reconfigureSystemControls( + mode: newMode, + duration: viewModel.systemControlsSeekDuration + ) } if systemControlsMode == .seek { @@ -535,7 +538,10 @@ private struct SystemControlsSection: View { .onChange(of: systemControlsSeekDuration) { _, newDuration in guard newDuration != viewModel.systemControlsSeekDuration else { return } viewModel.updateSystemControlsSeekDurationSync(newDuration) - appEnvironment?.playerService.reconfigureSystemControls() + appEnvironment?.playerService.reconfigureSystemControls( + mode: viewModel.systemControlsMode, + duration: newDuration + ) } } } header: {