BGTask.swift 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. // LoopFollow
  2. // BGTask.swift
  3. // Created by Jonas Björkert on 2025-01-13.
  4. import Foundation
  5. extension MainViewController {
  6. func scheduleBGTask(initialDelay: TimeInterval = 2) {
  7. let firstRun = Date().addingTimeInterval(initialDelay)
  8. TaskScheduler.shared.scheduleTask(id: .fetchBG, nextRun: firstRun) { [weak self] in
  9. guard let self = self else { return }
  10. self.bgTaskAction()
  11. }
  12. }
  13. func bgTaskAction() {
  14. // If anything goes wrong, try again in 60 seconds.
  15. TaskScheduler.shared.rescheduleTask(
  16. id: .fetchBG,
  17. to: Date().addingTimeInterval(60)
  18. )
  19. // If no Dexcom credentials and no Nightscout, schedule a retry in 60 seconds.
  20. if Storage.shared.shareUserName.value == "",
  21. Storage.shared.sharePassword.value == "",
  22. !IsNightscoutEnabled()
  23. {
  24. return
  25. }
  26. // If Dexcom credentials exist, fetch from DexShare
  27. if Storage.shared.shareUserName.value != "",
  28. Storage.shared.sharePassword.value != ""
  29. {
  30. webLoadDexShare()
  31. } else {
  32. webLoadNSBGData()
  33. }
  34. }
  35. }