TempTargetStartCondition.swift 697 B

12345678910111213141516171819202122
  1. // LoopFollow
  2. // TempTargetStartCondition.swift
  3. import Foundation
  4. /// Fires once when a temp-target is activated.
  5. struct TempTargetStartCondition: AlarmCondition {
  6. static let type: AlarmType = .tempTargetStart
  7. init() {}
  8. func evaluate(alarm _: Alarm, data: AlarmData, now: Date) -> Bool {
  9. guard let startTS = data.latestTempTargetStart, startTS > 0 else { return false }
  10. guard now.timeIntervalSince1970 - startTS <= 15 * 60 else { return false }
  11. let last = Storage.shared.lastTempTargetStartNotified.value ?? 0
  12. guard startTS > last else { return false }
  13. Storage.shared.lastTempTargetStartNotified.value = startTS
  14. return true
  15. }
  16. }