TempTargetEndCondition.swift 781 B

123456789101112131415161718192021222324252627
  1. //
  2. // TempTargetEndCondition.swift
  3. // LoopFollow
  4. //
  5. // Created by Jonas Björkert on 2025-05-14.
  6. // Copyright © 2025 Jon Fawcett. All rights reserved.
  7. //
  8. import Foundation
  9. /// Fires once when the active temp target ends.
  10. struct TempTargetEndCondition: AlarmCondition {
  11. static let type: AlarmType = .tempTargetEnd
  12. init() {}
  13. func evaluate(alarm _: Alarm, data: AlarmData) -> Bool {
  14. guard let endTS = data.latestTempTargetEnd, endTS > 0 else { return false }
  15. guard Date().timeIntervalSince1970 - endTS <= 15 * 60 else { return false }
  16. let last = Storage.shared.lastTempTargetEndNotified.value ?? 0
  17. guard endTS > last else { return false }
  18. Storage.shared.lastTempTargetEndNotified.value = endTS
  19. return true
  20. }
  21. }