GlucoseSetup.swift 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. import CoreData
  2. import Foundation
  3. extension Home.StateModel {
  4. @MainActor func setupGlucoseController() {
  5. glucoseControllerDelegate.onContentChange = { [weak self] in
  6. Task { @MainActor in
  7. self?.updateGlucoseFromController()
  8. }
  9. }
  10. do {
  11. try glucoseController.performFetch()
  12. updateGlucoseFromController()
  13. } catch {
  14. debug(.default, "\(DebuggingIdentifiers.failed) Failed to perform glucose fetch: \(error)")
  15. }
  16. }
  17. @MainActor func updateGlucoseFromController() {
  18. guard let objects = glucoseController.fetchedObjects else { return }
  19. glucoseFromPersistence = objects
  20. latestTwoGlucoseValues = Array(objects.suffix(2))
  21. updateGlucoseChartYAxis(glucoseValues: objects)
  22. }
  23. /// Called from `MainChartView` on `.onChange(of: units)` to recompute the glucose-derived chart state.
  24. func setupGlucoseArray() {
  25. Task { @MainActor in
  26. updateGlucoseFromController()
  27. }
  28. }
  29. }