AlarmTask.swift 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. //
  2. // AlarmTask.swift
  3. // LoopFollow
  4. //
  5. // Created by Jonas Björkert on 2025-01-12.
  6. // Copyright © 2025 Jon Fawcett. All rights reserved.
  7. //
  8. import Foundation
  9. //TODO: Nu körs ju alarm var 60 sekund... men man vill nog ha det direkt efter bg-värdet kommer in etc.
  10. //TODO: Men ändå kanske inte för nära ett tidigare alarm, men det kanske vi inte hanterar här....
  11. extension MainViewController {
  12. func scheduleAlarmTask(initialDelay: TimeInterval = 60) {
  13. let firstRun = Date().addingTimeInterval(initialDelay)
  14. TaskScheduler.shared.scheduleTask(id: .alarmCheck, nextRun: firstRun) { [weak self] in
  15. guard let self = self else { return }
  16. self.alarmTaskAction()
  17. }
  18. }
  19. func alarmTaskAction() {
  20. DispatchQueue.main.async {
  21. //TODO: Fyll på med mer alarmData
  22. //TODO: gör det möjligt att köra med fejkad data.
  23. let alarmData = AlarmData(
  24. expireDate: .distantPast // Storage.shared.expirationDate.value
  25. )
  26. LogManager.shared.log(category: .alarm, message: "Checking alarms based on \(alarmData)", isDebug: true)
  27. AlarmManager.shared.checkAlarms(data: alarmData)
  28. TaskScheduler.shared.rescheduleTask(id: .alarmCheck, to: Date().addingTimeInterval(60))
  29. }
  30. }
  31. }