Filter sounds if user is not a subscriber

main
Laurent 3 years ago
parent 74b1092680
commit badad9cefb
  1. 4
      LeCountdown.xcodeproj/project.pbxproj
  2. 5
      LeCountdown/Model/Model+Extensions.swift
  3. 31
      LeCountdown/Sound/DelaySoundPlayer.swift
  4. 4
      LeCountdown/Views/TimersView.swift

@ -101,6 +101,8 @@
C4742B59298411E800D5D950 /* CountdownFormView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4742B58298411E800D5D950 /* CountdownFormView.swift */; }; C4742B59298411E800D5D950 /* CountdownFormView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4742B58298411E800D5D950 /* CountdownFormView.swift */; };
C4742B5B298414B000D5D950 /* ImageSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4742B5A298414B000D5D950 /* ImageSelectionView.swift */; }; C4742B5B298414B000D5D950 /* ImageSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4742B5A298414B000D5D950 /* ImageSelectionView.swift */; };
C4742B5F2984205000D5D950 /* ViewModifiers.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4742B5E2984205000D5D950 /* ViewModifiers.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 */; }; C498E59F298D4DEA00E90DE0 /* LiveTimerListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C498E59E298D4DEA00E90DE0 /* LiveTimerListView.swift */; };
C498E5A1298D543900E90DE0 /* LiveTimer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C498E5A0298D543900E90DE0 /* LiveTimer.swift */; }; C498E5A1298D543900E90DE0 /* LiveTimer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C498E5A0298D543900E90DE0 /* LiveTimer.swift */; };
C498E5A3298D720600E90DE0 /* TestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C498E5A2298D720600E90DE0 /* TestView.swift */; }; C498E5A3298D720600E90DE0 /* TestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C498E5A2298D720600E90DE0 /* TestView.swift */; };
@ -1318,6 +1320,7 @@
C4A16DC829D311C800143D5E /* Extensions.swift in Sources */, C4A16DC829D311C800143D5E /* Extensions.swift in Sources */,
C4F8B1AE298AC451005C86A5 /* Alarm+CoreDataProperties.swift in Sources */, C4F8B1AE298AC451005C86A5 /* Alarm+CoreDataProperties.swift in Sources */,
C4BA2B32299F75DE00CB4FBA /* DefaultView.swift in Sources */, C4BA2B32299F75DE00CB4FBA /* DefaultView.swift in Sources */,
C48ECC0829DAC45900DE5A66 /* AppGuard.swift in Sources */,
C4F8B18D298AC288005C86A5 /* Stopwatch+CoreDataClass.swift in Sources */, C4F8B18D298AC288005C86A5 /* Stopwatch+CoreDataClass.swift in Sources */,
C438C8182982BFC100BF3EF9 /* Persistence.swift in Sources */, C438C8182982BFC100BF3EF9 /* Persistence.swift in Sources */,
); );
@ -1359,6 +1362,7 @@
C438C8012981327600BF3EF9 /* Persistence.swift in Sources */, C438C8012981327600BF3EF9 /* Persistence.swift in Sources */,
C473C31A29A926F50056B38A /* LaunchWidget.intentdefinition in Sources */, C473C31A29A926F50056B38A /* LaunchWidget.intentdefinition in Sources */,
C4BA2B5D299FFAB000CB4FBA /* Logger.swift in Sources */, C4BA2B5D299FFAB000CB4FBA /* Logger.swift in Sources */,
C48ECC0929DAC47200DE5A66 /* AppGuard.swift in Sources */,
C473C2FB29A8DC3A0056B38A /* LaunchWidgetAttributes.swift in Sources */, C473C2FB29A8DC3A0056B38A /* LaunchWidgetAttributes.swift in Sources */,
C4BA2B4B299FCE0C00CB4FBA /* IntervalGroup+CoreDataProperties.swift in Sources */, C4BA2B4B299FCE0C00CB4FBA /* IntervalGroup+CoreDataProperties.swift in Sources */,
C4F8B1B1298AC451005C86A5 /* AbstractSoundTimer+CoreDataClass.swift in Sources */, C4F8B1B1298AC451005C86A5 /* AbstractSoundTimer+CoreDataClass.swift in Sources */,

@ -48,7 +48,10 @@ extension AbstractSoundTimer {
} }
var someSound: Sound { var someSound: Sound {
var sounds = self.allSounds var sounds: Set<Sound> = self.allSounds
if !AppGuard.main.isSubscriber {
sounds = sounds.filter { !$0.isRestricted }
}
// remove last played sound if the playlist has at least 3 sounds // remove last played sound if the playlist has at least 3 sounds
if sounds.count > 2, if sounds.count > 2,

@ -54,9 +54,9 @@ import AVFoundation
Logger.log("self._player.deviceCurrentTime = \(self._player.deviceCurrentTime)") Logger.log("self._player.deviceCurrentTime = \(self._player.deviceCurrentTime)")
self._player.play(atTime: self._player.deviceCurrentTime + duration) self._player.play(atTime: self._player.deviceCurrentTime + duration)
if repeatCount == 0 { // if repeatCount == 0 {
self._scheduleFadeOut(duration: duration) // self._scheduleFadeOut(duration: duration)
} // }
} }
@ -64,27 +64,28 @@ import AVFoundation
self._player.stop() self._player.stop()
} }
fileprivate func _scheduleFadeOut(duration: TimeInterval) { // fileprivate func _scheduleFadeOut(duration: TimeInterval) {
// Logger.log("_scheduleFadeOut") // Logger.log("_scheduleFadeOut")
guard let soundDuration = self._soundDuration, soundDuration > 1.0 else { // guard let soundDuration = self._soundDuration, soundDuration > 1.0 else {
return // return
} // }
//
let interval = duration + soundDuration - 1.0 // let interval = duration + soundDuration - 1.0
// Logger.log("Fade in \(interval)") // Logger.log("Fade in \(interval)")
let date = Date(timeIntervalSinceNow: interval) // let date = Date(timeIntervalSinceNow: interval)
self._timer = Timer(fire: date, interval: 0.0, repeats: false) { _ in // Timer.scheduledTimer(withTimeInterval: interval, repeats: false) { _ in
// Logger.log("FADEOUT!") // Logger.log("FADEOUT!")
self._player.setVolume(0.0, fadeDuration: 1.0) // self._player.setVolume(0.0, fadeDuration: 1.0)
} // }
self._timer?.fire() // self._timer?.fire()
} // }
// MARK: - Delegate // MARK: - Delegate
func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) { func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {
Logger.log("audioPlayerDidFinishPlaying: successfully = \(flag)") Logger.log("audioPlayerDidFinishPlaying: successfully = \(flag)")
Conductor.maestro.cancelSoundPlayer(id: self._timerID) Conductor.maestro.cancelSoundPlayer(id: self._timerID)
// self._player.volume = 1.0
} }
} }

@ -43,7 +43,9 @@ struct TimersView: View {
ReorderableForEach(items: abstractTimers) { timer in 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) self.siriHandler(timer)

Loading…
Cancel
Save