DBSizeTask.swift 964 B

12345678910111213141516171819202122232425262728293031
  1. // LoopFollow
  2. // DBSizeTask.swift
  3. import Foundation
  4. extension MainViewController {
  5. /// Nightscout recomputes the database size on every data load, but the value only moves
  6. /// by a few MiB per day, so a slow poll is enough.
  7. private static let dbSizeInterval: TimeInterval = 6 * 60 * 60
  8. func scheduleDBSizeTask(initialDelay: TimeInterval = 5) {
  9. let firstRun = Date().addingTimeInterval(initialDelay)
  10. TaskScheduler.shared.scheduleTask(id: .dbSize, nextRun: firstRun) { [weak self] in
  11. guard let self = self else { return }
  12. self.dbSizeTaskAction()
  13. }
  14. }
  15. func dbSizeTaskAction() {
  16. guard IsNightscoutEnabled() else {
  17. TaskScheduler.shared.rescheduleTask(id: .dbSize, to: Date().addingTimeInterval(60))
  18. return
  19. }
  20. webLoadNSDBSize()
  21. TaskScheduler.shared.rescheduleTask(id: .dbSize, to: Date().addingTimeInterval(Self.dbSizeInterval))
  22. }
  23. }