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

Merge pull request #859 from bastiaanv/fix/initial-pump-config

fix: rework default pump settings to actual pump settings
Deniz Cengiz 6 месяцев назад
Родитель
Сommit
41dff2d162

+ 6 - 6
Trio/Sources/Modules/BasalProfileEditor/BasalProfileEditorStateModel.swift

@@ -113,6 +113,12 @@ extension BasalProfileEditor {
                         // Successfully saved and synced
                         self.initialItems = self.items.map { Item(rateIndex: $0.rateIndex, timeIndex: $0.timeIndex) }
 
+                        DispatchQueue.main.async {
+                            self.broadcaster.notify(BasalProfileObserver.self, on: .main) {
+                                $0.basalProfileDidChange(profile)
+                            }
+                        }
+
                         Task.detached(priority: .low) {
                             do {
                                 debug(.nightscout, "Attempting to upload basal rates to Nightscout")
@@ -130,12 +136,6 @@ extension BasalProfileEditor {
                     print("We were successful")
                 }
                 .store(in: &lifetime)
-
-            DispatchQueue.main.async {
-                self.broadcaster.notify(BasalProfileObserver.self, on: .main) {
-                    $0.basalProfileDidChange(profile)
-                }
-            }
         }
 
         @MainActor func validate() {

+ 13 - 2
Trio/Sources/Modules/Home/HomeStateModel.swift

@@ -2,6 +2,7 @@ import CGMBLEKitUI
 import Combine
 import CoreData
 import Foundation
+import LoopKit
 import LoopKitUI
 import Observation
 import SwiftDate
@@ -106,6 +107,7 @@ extension Home {
         var cgmAvailable: Bool = false
         var listOfCGM: [CGMModel] = []
         var cgmCurrent = cgmDefaultModel
+        var pumpInitialSettings = PumpConfig.PumpInitialSettings.default
         var shouldRunDeleteOnSettingsChange = true
 
         var showCarbsRequiredBadge: Bool = true
@@ -549,9 +551,11 @@ extension Home {
         }
 
         private func setupPumpSettings() async {
-            let maxBasal = await provider.pumpSettings().maxBasal
+            let settings = await provider.pumpSettings()
             await MainActor.run {
-                self.maxBasal = maxBasal
+                self.maxBasal = settings.maxBasal
+                self.pumpInitialSettings.maxBasalRateUnitsPerHour = Double(settings.maxBasal)
+                self.pumpInitialSettings.maxBolusUnits = Double(settings.maxBolus)
             }
         }
 
@@ -559,6 +563,13 @@ extension Home {
             let basalProfile = await provider.getBasalProfile()
             await MainActor.run {
                 self.basalProfile = basalProfile
+
+                if let schedule = BasalRateSchedule(
+                    dailyItems: basalProfile
+                        .map { RepeatingScheduleValue(startTime: TimeInterval($0.minutes * 60), value: Double($0.rate)) }
+                ) {
+                    self.pumpInitialSettings.basalSchedule = schedule
+                }
             }
         }
 

+ 1 - 1
Trio/Sources/Modules/Home/View/HomeRootView.swift

@@ -996,7 +996,7 @@ extension Home {
                 } else {
                     PumpConfig.PumpSetupView(
                         pumpType: state.setupPumpType,
-                        pumpInitialSettings: PumpConfig.PumpInitialSettings.default,
+                        pumpInitialSettings: state.pumpInitialSettings,
                         bluetoothManager: state.provider.apsManager.bluetoothManager!,
                         completionDelegate: state,
                         setupDelegate: state

+ 3 - 3
Trio/Sources/Modules/PumpConfig/PumpConfigDataFlow.swift

@@ -14,9 +14,9 @@ enum PumpConfig {
     }
 
     struct PumpInitialSettings {
-        let maxBolusUnits: Double
-        let maxBasalRateUnitsPerHour: Double
-        let basalSchedule: BasalRateSchedule
+        var maxBolusUnits: Double
+        var maxBasalRateUnitsPerHour: Double
+        var basalSchedule: BasalRateSchedule
 
         static let `default` = PumpInitialSettings(
             maxBolusUnits: 10,