Просмотр исходного кода

Introduce to mg/dL migration for existing mmol/L users

Deniz Cengiz 1 год назад
Родитель
Сommit
a4d8275aba

+ 3 - 3
FreeAPS/Sources/Models/BGTargets.swift

@@ -2,14 +2,14 @@ import Foundation
 
 struct BGTargets: JSON {
     let units: GlucoseUnits
-    let userPrefferedUnits: GlucoseUnits
-    let targets: [BGTargetEntry]
+    let userPreferredUnits: GlucoseUnits
+    var targets: [BGTargetEntry]
 }
 
 extension BGTargets {
     private enum CodingKeys: String, CodingKey {
         case units
-        case userPrefferedUnits = "user_preferred_units"
+        case userPreferredUnits = "user_preferred_units"
         case targets
     }
 }

+ 2 - 2
FreeAPS/Sources/Models/InsulinSensitivities.swift

@@ -2,14 +2,14 @@ import Foundation
 
 struct InsulinSensitivities: JSON {
     let units: GlucoseUnits
-    let userPrefferedUnits: GlucoseUnits
+    let userPreferredUnits: GlucoseUnits
     let sensitivities: [InsulinSensitivityEntry]
 }
 
 extension InsulinSensitivities {
     private enum CodingKeys: String, CodingKey {
         case units
-        case userPrefferedUnits = "user_preferred_units"
+        case userPreferredUnits = "user_preferred_units"
         case sensitivities
     }
 }

+ 1 - 1
FreeAPS/Sources/Modules/Bolus/View/PopupView.swift

@@ -195,7 +195,7 @@ struct PopupView: View {
                         .precision(.fractionLength(fractionDigits))
                 )
                 + " / " +
-                state.isf.formatted()
+                (state.units == .mgdL ? state.isf : state.isf.asMmolL).formatted()
                 + " ≈ " +
                 self.insulinRounder(state.targetDifferenceInsulin).formatted()
 

+ 17 - 2
FreeAPS/Sources/Modules/ISFEditor/ISFEditorProvider.swift

@@ -1,13 +1,28 @@
 extension ISFEditor {
     final class Provider: BaseProvider, ISFEditorProvider {
         var profile: InsulinSensitivities {
-            storage.retrieve(OpenAPS.Settings.insulinSensitivities, as: InsulinSensitivities.self)
+            var retrievedSensitivities = storage.retrieve(OpenAPS.Settings.insulinSensitivities, as: InsulinSensitivities.self)
                 ?? InsulinSensitivities(from: OpenAPS.defaults(for: OpenAPS.Settings.insulinSensitivities))
                 ?? InsulinSensitivities(
                     units: .mgdL,
-                    userPrefferedUnits: .mgdL,
+                    userPreferredUnits: .mgdL,
                     sensitivities: []
                 )
+
+            // migrate existing mmol/L Trio users from mmol/L settings to pure mg/dl settings
+            if retrievedSensitivities.units == .mmolL || retrievedSensitivities.userPreferredUnits == .mmolL {
+                let convertedSensitivities = retrievedSensitivities.sensitivities.map { isf in
+                    InsulinSensitivityEntry(sensitivity: isf.sensitivity.asMgdL, offset: isf.offset, start: isf.start)
+                }
+                retrievedSensitivities = InsulinSensitivities(
+                    units: .mgdL,
+                    userPreferredUnits: .mgdL,
+                    sensitivities: convertedSensitivities
+                )
+                saveProfile(retrievedSensitivities)
+            }
+
+            return retrievedSensitivities
         }
 
         func saveProfile(_ profile: InsulinSensitivities) {

+ 1 - 1
FreeAPS/Sources/Modules/ISFEditor/ISFEditorStateModel.swift

@@ -89,7 +89,7 @@ extension ISFEditor {
             }
             let profile = InsulinSensitivities(
                 units: .mgdL,
-                userPrefferedUnits: .mgdL,
+                userPreferredUnits: .mgdL,
                 sensitivities: sensitivities
             )
             provider.saveProfile(profile)

+ 2 - 2
FreeAPS/Sources/Modules/NightscoutConfig/NightscoutConfigStateModel.swift

@@ -244,7 +244,7 @@ extension NightscoutConfig {
 
                         let sensitivitiesProfile = InsulinSensitivities(
                             units: self.units,
-                            userPrefferedUnits: self.units,
+                            userPreferredUnits: self.units,
                             sensitivities: sensitivities
                         )
 
@@ -264,7 +264,7 @@ extension NightscoutConfig {
                                 ) }
                         let targetsProfile = BGTargets(
                             units: self.units,
-                            userPrefferedUnits: self.units,
+                            userPreferredUnits: self.units,
                             targets: targets
                         )
                         // IS THERE A PUMP?

+ 0 - 2
FreeAPS/Sources/Modules/SMBSettings/View/SMBSettingsRootView.swift

@@ -295,8 +295,6 @@ extension SMBSettings {
                         comment: "SMB Interval"
                     )
                 )
-
-                Text("Bolus Increment removed – should be pump derived!")
             }
             .sheet(isPresented: $shouldDisplayHint) {
                 SettingInputHintView(

+ 9 - 2
FreeAPS/Sources/Modules/Settings/View/SettingsRootView.swift

@@ -216,6 +216,13 @@ extension Settings {
                     ).listRowBackground(Color.chart)
                 }
 
+//                Section {
+//                    Text("Targets")
+//                        .navigationLink(to: .configEditor(file: OpenAPS.Settings.bgTargets), from: self)
+//                    Text("Sensitivities")
+//                        .navigationLink(to: .configEditor(file: OpenAPS.Settings.insulinSensitivities), from: self)
+//                }.listRowBackground(Color.chart)
+
                 // TODO: remove this more or less entirely; add build-time flag to enable Middleware; add settings export feature
 //                Section {
 //                    Toggle("Developer Options", isOn: $state.debugOptions)
@@ -249,8 +256,8 @@ extension Settings {
 //                            //                                .navigationLink(to: .configEditor(file: OpenAPS.Monitor.pumpHistory), from: self)
 //                            Text("Basal profile")
 //                                .navigationLink(to: .configEditor(file: OpenAPS.Settings.basalProfile), from: self)
-//                            Text("Targets ranges")
-//                                .navigationLink(to: .configEditor(file: OpenAPS.Settings.bgTargets), from: self)
+//                    Text("Targets ranges")
+//                        .navigationLink(to: .configEditor(file: OpenAPS.Settings.bgTargets), from: self)
 //                            Text("Temp targets")
 //                                .navigationLink(to: .configEditor(file: OpenAPS.Settings.tempTargets), from: self)
 //                        }

+ 13 - 2
FreeAPS/Sources/Modules/TargetsEditor/TargetsEditorProvider.swift

@@ -1,9 +1,20 @@
 extension TargetsEditor {
     final class Provider: BaseProvider, TargetsEditorProvider {
         var profile: BGTargets {
-            storage.retrieve(OpenAPS.Settings.bgTargets, as: BGTargets.self)
+            var retrievedTargets = storage.retrieve(OpenAPS.Settings.bgTargets, as: BGTargets.self)
                 ?? BGTargets(from: OpenAPS.defaults(for: OpenAPS.Settings.bgTargets))
-                ?? BGTargets(units: .mgdL, userPrefferedUnits: .mgdL, targets: [])
+                ?? BGTargets(units: .mgdL, userPreferredUnits: .mgdL, targets: [])
+
+            // migrate existing mmol/L Trio users from mmol/L settings to pure mg/dl settings
+            if retrievedTargets.units == .mmolL || retrievedTargets.userPreferredUnits == .mmolL {
+                let convertedTargets = retrievedTargets.targets.map { target in
+                    BGTargetEntry(low: target.low.asMgdL, high: target.high.asMgdL, start: target.start, offset: target.offset)
+                }
+                retrievedTargets = BGTargets(units: .mgdL, userPreferredUnits: .mgdL, targets: convertedTargets)
+                saveProfile(retrievedTargets)
+            }
+
+            return retrievedTargets
         }
 
         func saveProfile(_ profile: BGTargets) {

+ 1 - 1
FreeAPS/Sources/Modules/TargetsEditor/TargetsEditorStateModel.swift

@@ -73,7 +73,7 @@ extension TargetsEditor {
                 let high = low
                 return BGTargetEntry(low: low, high: high, start: formatter.string(from: date), offset: minutes)
             }
-            let profile = BGTargets(units: .mgdL, userPrefferedUnits: .mgdL, targets: targets)
+            let profile = BGTargets(units: .mgdL, userPreferredUnits: .mgdL, targets: targets)
             provider.saveProfile(profile)
             initialItems = items.map { Item(lowIndex: $0.lowIndex, highIndex: $0.highIndex, timeIndex: $0.timeIndex) }
         }

+ 1 - 1
FreeAPS/Sources/Modules/UserInterfaceSettings/View/UserInterfaceSettingsRootView.swift

@@ -81,7 +81,7 @@ extension UserInterfaceSettings {
                                     }
                                 ).buttonStyle(BorderlessButtonStyle())
                             }.padding(.top)
-                        }.padding(.bottom)
+                        }.padding(.vertical)
                     }
                 ).listRowBackground(Color.chart)