HomeViewModel.swift 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import SwiftDate
  2. import SwiftUI
  3. extension Home {
  4. class ViewModel<Provider>: BaseViewModel<Provider>, ObservableObject where Provider: HomeProvider {
  5. @Injected() var broadcaster: Broadcaster!
  6. @Injected() var settingsManager: SettingsManager!
  7. @Published var glucose: [BloodGlucose] = []
  8. @Published var suggestion: Suggestion?
  9. @Published var allowManualTemp = false
  10. override func subscribe() {
  11. glucose = provider.filteredGlucose()
  12. suggestion = provider.suggestion
  13. allowManualTemp = !settingsManager.settings.closedLoop
  14. broadcaster.register(GlucoseObserver.self, observer: self)
  15. broadcaster.register(SuggestionObserver.self, observer: self)
  16. broadcaster.register(SettingsObserver.self, observer: self)
  17. }
  18. func addCarbs() {
  19. showModal(for: .addCarbs)
  20. }
  21. func runLoop() {
  22. provider.fetchAndLoop()
  23. }
  24. func addTempTarget() {
  25. showModal(for: .addTempTarget)
  26. }
  27. func manualTampBasal() {
  28. showModal(for: .manualTempBasal)
  29. }
  30. func bolus() {
  31. showModal(for: .bolus)
  32. }
  33. func settings() {
  34. showModal(for: .settings)
  35. }
  36. }
  37. }
  38. extension Home.ViewModel: GlucoseObserver, SuggestionObserver, SettingsObserver {
  39. func glucoseDidUpdate(_: [BloodGlucose]) {
  40. glucose = provider.filteredGlucose()
  41. }
  42. func suggestionDidUpdate(_ suggestion: Suggestion) {
  43. self.suggestion = suggestion
  44. }
  45. func settingsDidChange(_ settings: FreeAPSSettings) {
  46. allowManualTemp = !settings.closedLoop
  47. }
  48. }