From badad9cefb165d53db44a021ffc6c1db0be729f4 Mon Sep 17 00:00:00 2001 From: Laurent Date: Mon, 3 Apr 2023 10:44:44 +0200 Subject: [PATCH] Filter sounds if user is not a subscriber --- LeCountdown.xcodeproj/project.pbxproj | 4 +++ LeCountdown/Model/Model+Extensions.swift | 5 +++- LeCountdown/Sound/DelaySoundPlayer.swift | 31 ++++++++++++------------ LeCountdown/Views/TimersView.swift | 4 ++- 4 files changed, 27 insertions(+), 17 deletions(-) diff --git a/LeCountdown.xcodeproj/project.pbxproj b/LeCountdown.xcodeproj/project.pbxproj index b07c8fb..f6fc68f 100644 --- a/LeCountdown.xcodeproj/project.pbxproj +++ b/LeCountdown.xcodeproj/project.pbxproj @@ -101,6 +101,8 @@ C4742B59298411E800D5D950 /* CountdownFormView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4742B58298411E800D5D950 /* CountdownFormView.swift */; }; C4742B5B298414B000D5D950 /* ImageSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4742B5A298414B000D5D950 /* ImageSelectionView.swift */; }; C4742B5F2984205000D5D950 /* ViewModifiers.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4742B5E2984205000D5D950 /* ViewModifiers.swift */; }; + C48ECC0829DAC45900DE5A66 /* AppGuard.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4BA2B56299FFA4F00CB4FBA /* AppGuard.swift */; }; + C48ECC0929DAC47200DE5A66 /* AppGuard.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4BA2B56299FFA4F00CB4FBA /* AppGuard.swift */; }; C498E59F298D4DEA00E90DE0 /* LiveTimerListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C498E59E298D4DEA00E90DE0 /* LiveTimerListView.swift */; }; C498E5A1298D543900E90DE0 /* LiveTimer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C498E5A0298D543900E90DE0 /* LiveTimer.swift */; }; C498E5A3298D720600E90DE0 /* TestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C498E5A2298D720600E90DE0 /* TestView.swift */; }; @@ -1318,6 +1320,7 @@ C4A16DC829D311C800143D5E /* Extensions.swift in Sources */, C4F8B1AE298AC451005C86A5 /* Alarm+CoreDataProperties.swift in Sources */, C4BA2B32299F75DE00CB4FBA /* DefaultView.swift in Sources */, + C48ECC0829DAC45900DE5A66 /* AppGuard.swift in Sources */, C4F8B18D298AC288005C86A5 /* Stopwatch+CoreDataClass.swift in Sources */, C438C8182982BFC100BF3EF9 /* Persistence.swift in Sources */, ); @@ -1359,6 +1362,7 @@ C438C8012981327600BF3EF9 /* Persistence.swift in Sources */, C473C31A29A926F50056B38A /* LaunchWidget.intentdefinition in Sources */, C4BA2B5D299FFAB000CB4FBA /* Logger.swift in Sources */, + C48ECC0929DAC47200DE5A66 /* AppGuard.swift in Sources */, C473C2FB29A8DC3A0056B38A /* LaunchWidgetAttributes.swift in Sources */, C4BA2B4B299FCE0C00CB4FBA /* IntervalGroup+CoreDataProperties.swift in Sources */, C4F8B1B1298AC451005C86A5 /* AbstractSoundTimer+CoreDataClass.swift in Sources */, diff --git a/LeCountdown/Model/Model+Extensions.swift b/LeCountdown/Model/Model+Extensions.swift index 6710a0f..da88dad 100644 --- a/LeCountdown/Model/Model+Extensions.swift +++ b/LeCountdown/Model/Model+Extensions.swift @@ -48,7 +48,10 @@ extension AbstractSoundTimer { } var someSound: Sound { - var sounds = self.allSounds + var sounds: Set = self.allSounds + if !AppGuard.main.isSubscriber { + sounds = sounds.filter { !$0.isRestricted } + } // remove last played sound if the playlist has at least 3 sounds if sounds.count > 2, diff --git a/LeCountdown/Sound/DelaySoundPlayer.swift b/LeCountdown/Sound/DelaySoundPlayer.swift index c5829ba..d1ef88c 100644 --- a/LeCountdown/Sound/DelaySoundPlayer.swift +++ b/LeCountdown/Sound/DelaySoundPlayer.swift @@ -54,9 +54,9 @@ import AVFoundation Logger.log("self._player.deviceCurrentTime = \(self._player.deviceCurrentTime)") self._player.play(atTime: self._player.deviceCurrentTime + duration) - if repeatCount == 0 { - self._scheduleFadeOut(duration: duration) - } +// if repeatCount == 0 { +// self._scheduleFadeOut(duration: duration) +// } } @@ -64,27 +64,28 @@ import AVFoundation self._player.stop() } - fileprivate func _scheduleFadeOut(duration: TimeInterval) { +// fileprivate func _scheduleFadeOut(duration: TimeInterval) { // Logger.log("_scheduleFadeOut") - guard let soundDuration = self._soundDuration, soundDuration > 1.0 else { - return - } - - let interval = duration + soundDuration - 1.0 +// guard let soundDuration = self._soundDuration, soundDuration > 1.0 else { +// return +// } +// +// let interval = duration + soundDuration - 1.0 // Logger.log("Fade in \(interval)") - let date = Date(timeIntervalSinceNow: interval) - self._timer = Timer(fire: date, interval: 0.0, repeats: false) { _ in +// let date = Date(timeIntervalSinceNow: interval) +// Timer.scheduledTimer(withTimeInterval: interval, repeats: false) { _ in // Logger.log("FADEOUT!") - self._player.setVolume(0.0, fadeDuration: 1.0) - } - self._timer?.fire() - } +// self._player.setVolume(0.0, fadeDuration: 1.0) +// } +// self._timer?.fire() +// } // MARK: - Delegate func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) { Logger.log("audioPlayerDidFinishPlaying: successfully = \(flag)") Conductor.maestro.cancelSoundPlayer(id: self._timerID) +// self._player.volume = 1.0 } } diff --git a/LeCountdown/Views/TimersView.swift b/LeCountdown/Views/TimersView.swift index d038337..ccfe3b9 100644 --- a/LeCountdown/Views/TimersView.swift +++ b/LeCountdown/Views/TimersView.swift @@ -43,7 +43,9 @@ struct TimersView: View { ReorderableForEach(items: abstractTimers) { timer in - DialView(timer: timer, isEditingBinding: self.$isEditing, frameSize: width, handler: { timer in + DialView(timer: timer, + isEditingBinding: self.$isEditing, + frameSize: width, handler: { timer in self.siriHandler(timer)