Browse Source

issue #40 : update manager glucose units when changing trio preferences

Bjørn Inge Berg 1 year ago
parent
commit
f797d6f2ff

+ 1 - 0
FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorDataFlow.swift

@@ -109,6 +109,7 @@ protocol PreferencesEditorProvider: Provider {
     var preferences: Preferences { get }
     func savePreferences(_ preferences: Preferences)
     func migrateUnits()
+    func updateManagerUnits()
 }
 
 protocol PreferencesSettable: AnyObject {

+ 11 - 0
FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorProvider.swift

@@ -1,8 +1,10 @@
 import Foundation
+import HealthKit
 
 extension PreferencesEditor {
     final class Provider: BaseProvider, PreferencesEditorProvider {
         @Injected() private var settingsManager: SettingsManager!
+        @Injected() var fetchGlucoseManager: FetchGlucoseManager!
         private let processQueue = DispatchQueue(label: "PreferencesEditorProvider.processQueue")
 
         var preferences: Preferences {
@@ -17,6 +19,15 @@ extension PreferencesEditor {
             }
         }
 
+        func updateManagerUnits() {
+            var manager = fetchGlucoseManager.cgmManager
+            let managerName = manager.map { "\(type(of: $0))" } ?? "nil"
+            let units = settingsManager.settings.units
+            let loopkitUnits: HKUnit = units == .mgdL ? .milligramsPerDeciliter : .millimolesPerLiter
+            print("manager: \(managerName) is changing units to: \(loopkitUnits.description) ")
+            manager?.unitDidChange(to: loopkitUnits)
+        }
+
         func migrateUnits() {
             migrateTargets()
             migrateISF()

+ 1 - 0
FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorStateModel.swift

@@ -16,6 +16,7 @@ extension PreferencesEditor {
             subscribeSetting(\.units, on: $unitsIndex.map { $0 == 0 ? GlucoseUnits.mgdL : .mmolL }) {
                 unitsIndex = $0 == .mgdL ? 0 : 1
             } didSet: { [weak self] _ in
+                self?.provider.updateManagerUnits()
                 self?.provider.migrateUnits()
             }