WatchConfigStateModel.swift 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import ConnectIQ
  2. import SwiftUI
  3. extension WatchConfig {
  4. final class StateModel: BaseStateModel<Provider> {
  5. @Injected() private var garmin: GarminManager!
  6. @Published var units: GlucoseUnits = .mgdL
  7. @Published var devices: [IQDevice] = []
  8. @Published var confirmBolusFaster = false
  9. private(set) var preferences = Preferences()
  10. override func subscribe() {
  11. preferences = provider.preferences
  12. units = settingsManager.settings.units
  13. subscribeSetting(\.confirmBolusFaster, on: $confirmBolusFaster) { confirmBolusFaster = $0 }
  14. devices = garmin.devices
  15. }
  16. func selectGarminDevices() {
  17. garmin.selectDevices()
  18. .receive(on: DispatchQueue.main)
  19. .weakAssign(to: \.devices, on: self)
  20. .store(in: &lifetime)
  21. }
  22. func deleteGarminDevice() {
  23. garmin.updateDeviceList(devices)
  24. }
  25. }
  26. }
  27. extension WatchConfig.StateModel: SettingsObserver {
  28. func settingsDidChange(_: TrioSettings) {
  29. units = settingsManager.settings.units
  30. }
  31. }