Add support for fading out on sleep timer end

Playback will start to fadeout during last 60 seconds of the sleep timer. Once faded out, playback will be paused, volume reset, and playback seeked to start of fadeout.
This commit is contained in:
Adam Traeger
2025-03-09 13:14:15 -05:00
parent 769ce0ade9
commit 33c738873f
6 changed files with 75 additions and 5 deletions
@@ -125,7 +125,11 @@ extension AudioPlayer {
if var sleepTimeRemaining = self.sleepTimeRemaining {
sleepTimeRemaining -= 1
self.sleepTimeRemaining = sleepTimeRemaining
if sleepTimeRemaining == 60 && self.isSleepTimerFadeOutEnabled() {
self.startFadeOut()
}
// Handle the sleep if the timer has expired
if sleepTimeRemaining <= 0 {
self.handleSleepEnd()
@@ -154,5 +158,9 @@ extension AudioPlayer {
private func isChapterSleepTimerSet() -> Bool {
return self.sleepTimeChapterStopAt != nil
}
private func isSleepTimerFadeOutEnabled() -> Bool {
let deviceSettings = Database.shared.getDeviceSettings()
return !deviceSettings.disableSleepTimerFadeOut
}
}