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 */; };
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 */,

@ -48,7 +48,10 @@ extension AbstractSoundTimer {
}
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
if sounds.count > 2,

@ -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
}
}

@ -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)

Loading…
Cancel
Save