@@ -130,6 +130,10 @@ final class PlayerService: NSObject, PlayerServiceProtocol {
130130 static let volumeKey = " playerVolume "
131131 /// UserDefaults key for persisting volume before mute.
132132 static let volumeBeforeMuteKey = " playerVolumeBeforeMute "
133+ /// UserDefaults key for persisting shuffle state.
134+ static let shuffleEnabledKey = " playerShuffleEnabled "
135+ /// UserDefaults key for persisting repeat mode.
136+ static let repeatModeKey = " playerRepeatMode "
133137
134138 // MARK: - Initialization
135139
@@ -150,6 +154,29 @@ final class PlayerService: NSObject, PlayerServiceProtocol {
150154 self . volumeBeforeMute = self . volume > 0 ? self . volume : 1.0
151155 }
152156
157+ // Restore shuffle and repeat settings if enabled in settings
158+ if SettingsManager . shared. rememberPlaybackSettings {
159+ if UserDefaults . standard. object ( forKey: Self . shuffleEnabledKey) != nil {
160+ self . shuffleEnabled = UserDefaults . standard. bool ( forKey: Self . shuffleEnabledKey)
161+ self . logger. info ( " Restored shuffle state: \( self . shuffleEnabled) " )
162+ }
163+
164+ if let savedRepeatMode = UserDefaults . standard. string ( forKey: Self . repeatModeKey) {
165+ switch savedRepeatMode {
166+ case " all " :
167+ self . repeatMode = . all
168+ case " one " :
169+ self . repeatMode = . one
170+ case " off " :
171+ self . repeatMode = . off
172+ default :
173+ self . logger. warning ( " Unexpected repeat mode value in UserDefaults: \( savedRepeatMode) , defaulting to off " )
174+ self . repeatMode = . off
175+ }
176+ self . logger. info ( " Restored repeat mode: \( String ( describing: self . repeatMode) ) " )
177+ }
178+ }
179+
153180 // Load mock state for UI tests
154181 self . loadMockStateIfNeeded ( )
155182 }
@@ -618,6 +645,10 @@ final class PlayerService: NSObject, PlayerServiceProtocol {
618645 /// Toggles shuffle mode.
619646 func toggleShuffle( ) {
620647 self . shuffleEnabled. toggle ( )
648+ // Persist shuffle state to UserDefaults if setting is enabled
649+ if SettingsManager . shared. rememberPlaybackSettings {
650+ UserDefaults . standard. set ( self . shuffleEnabled, forKey: Self . shuffleEnabledKey)
651+ }
621652 let status = self . shuffleEnabled ? " enabled " : " disabled "
622653 self . logger. info ( " Shuffle mode: \( status) " )
623654 }
@@ -632,6 +663,18 @@ final class PlayerService: NSObject, PlayerServiceProtocol {
632663 case . one:
633664 self . repeatMode = . off
634665 }
666+ // Persist repeat mode to UserDefaults if setting is enabled
667+ if SettingsManager . shared. rememberPlaybackSettings {
668+ let modeString = switch self . repeatMode {
669+ case . off:
670+ " off "
671+ case . all:
672+ " all "
673+ case . one:
674+ " one "
675+ }
676+ UserDefaults . standard. set ( modeString, forKey: Self . repeatModeKey)
677+ }
635678 let mode = self . repeatMode
636679 self . logger. info ( " Repeat mode: \( String ( describing: mode) ) " )
637680 }
0 commit comments