BGTask.swift 1.3 KB

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