From de847a739e1d901c5e0e83d0c297404cfc5e77f6 Mon Sep 17 00:00:00 2001 From: Laurent Date: Thu, 13 Apr 2023 17:01:24 +0200 Subject: [PATCH] Sound improvements --- .../xcschemes/LeCountdown.xcscheme | 7 +++++++ LeCountdown/AppDelegate.swift | 2 ++ LeCountdown/Conductor.swift | 20 +++++++++++++------ LeCountdown/LeCountdownApp.swift | 15 ++++++-------- .../Model/NSManagedContext+Extensions.swift | 6 +++++- LeCountdown/Sound/DelaySoundPlayer.swift | 2 ++ LeCountdown/Sound/SoundPlayer.swift | 1 + 7 files changed, 37 insertions(+), 16 deletions(-) diff --git a/LeCountdown.xcodeproj/xcshareddata/xcschemes/LeCountdown.xcscheme b/LeCountdown.xcodeproj/xcshareddata/xcschemes/LeCountdown.xcscheme index 22e466d..7113a0f 100644 --- a/LeCountdown.xcodeproj/xcshareddata/xcschemes/LeCountdown.xcscheme +++ b/LeCountdown.xcodeproj/xcshareddata/xcschemes/LeCountdown.xcscheme @@ -64,6 +64,13 @@ isEnabled = "YES"> + + + + (_ request: NSFetchRequest) throws -> [T] where T : NSFetchRequestResult - func fetch(entityName: String, predicate: NSPredicate) -> [T] where T : NSFetchRequestResult { + func fetch(entityName: String, predicate: NSPredicate? = nil, sortDescriptor: NSSortDescriptor? = nil) -> [T] where T : NSFetchRequestResult { let request = NSFetchRequest(entityName: entityName) request.predicate = predicate + if let sortDescriptor = sortDescriptor { + request.sortDescriptors = [sortDescriptor] + } do { return try self.fetch(request) } catch { + Logger.error(error) return [] } } diff --git a/LeCountdown/Sound/DelaySoundPlayer.swift b/LeCountdown/Sound/DelaySoundPlayer.swift index f02edff..2bd013d 100644 --- a/LeCountdown/Sound/DelaySoundPlayer.swift +++ b/LeCountdown/Sound/DelaySoundPlayer.swift @@ -63,6 +63,8 @@ import AVFoundation Logger.log("audioPlayerDidFinishPlaying: successfully = \(flag)") // Conductor.maestro.cancelSoundPlayer(id: self._timerID) Conductor.maestro.cleanupLiveActivities() + + self.stop() } } diff --git a/LeCountdown/Sound/SoundPlayer.swift b/LeCountdown/Sound/SoundPlayer.swift index be46955..d7e6e5e 100644 --- a/LeCountdown/Sound/SoundPlayer.swift +++ b/LeCountdown/Sound/SoundPlayer.swift @@ -76,6 +76,7 @@ enum SoundPlayerError : Error { func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) { Conductor.maestro.deactivateAudioSessionIfPossible() + self.stop() } func audioPlayerDecodeErrorDidOccur(_ player: AVAudioPlayer, error: Error?) {