Fix lock screen always showing 10s seek regardless of system controls setting

This commit is contained in:
Arkadiusz Fal
2026-02-12 05:02:41 +01:00
parent 78bc7e0063
commit ded130a8c3
3 changed files with 26 additions and 5 deletions

View File

@@ -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 {

View File

@@ -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,

View File

@@ -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: {