Ivan Valkou 4 лет назад
Родитель
Сommit
2eea8380d5

+ 3 - 3
FreeAPS/Sources/APS/DeviceDataManager.swift

@@ -67,6 +67,8 @@ final class BaseDeviceDataManager: DeviceDataManager, Injectable {
                 }
             } else {
                 pumpDisplayState.value = nil
+                pumpExpiresAtDate.send(nil)
+                pumpName.send("")
             }
         }
     }
@@ -86,9 +88,7 @@ final class BaseDeviceDataManager: DeviceDataManager, Injectable {
     }
 
     func setupPumpManager() {
-        if let pumpManagerRawValue = UserDefaults.standard.pumpManagerRawValue {
-            pumpManager = pumpManagerFromRawValue(pumpManagerRawValue)
-        }
+        pumpManager = UserDefaults.standard.pumpManagerRawValue.flatMap { pumpManagerFromRawValue($0) }
     }
 
     func createBolusProgressReporter() -> DoseProgressReporter? {

+ 20 - 1
FreeAPS/Sources/Modules/Home/HomeStateModel.swift

@@ -34,7 +34,7 @@ extension Home {
         @Published var tempRate: Decimal?
         @Published var battery: Battery?
         @Published var reservoir: Decimal?
-        @Published var pumpName = "Pump"
+        @Published var pumpName = ""
         @Published var pumpExpiresAtDate: Date?
         @Published var tempTarget: TempTarget?
         @Published var setupPump = false
@@ -46,6 +46,7 @@ extension Home {
         @Published var carbsRequired: Decimal?
         @Published var allowManualTemp = false
         @Published var units: GlucoseUnits = .mmolL
+        @Published var pumpDisplayState: PumpDisplayState?
 
         override func subscribe() {
             setupGlucose()
@@ -123,6 +124,24 @@ extension Home {
                 .receive(on: DispatchQueue.main)
                 .weakAssign(to: \.bolusProgress, on: self)
                 .store(in: &lifetime)
+
+            apsManager.pumpDisplayState
+                .receive(on: DispatchQueue.main)
+                .sink { [weak self] state in
+                    guard let self = self else { return }
+                    self.pumpDisplayState = state
+                    if state == nil {
+                        self.reservoir = nil
+                        self.battery = nil
+                        self.pumpName = ""
+                        self.pumpExpiresAtDate = nil
+                        self.setupPump = false
+                    } else {
+                        self.setupBattery()
+                        self.setupReservoir()
+                    }
+                }
+                .store(in: &lifetime)
         }
 
         func addCarbs() {

+ 3 - 1
FreeAPS/Sources/Modules/Home/View/HomeRootView.swift

@@ -69,7 +69,9 @@ extension Home {
                     timerDate: $state.timerDate
                 )
                 .onTapGesture {
-                    state.setupPump = true
+                    if state.pumpDisplayState != nil {
+                        state.setupPump = true
+                    }
                 }
                 .popover(isPresented: $state.setupPump) {
                     if let pumpManager = state.provider.apsManager.pumpManager {

+ 0 - 1
FreeAPS/Sources/Modules/PumpConfig/PumpConfigProvider.swift

@@ -16,7 +16,6 @@ extension PumpConfig {
 
         func basalProfile() -> [BasalProfileEntry] {
             storage.retrieve(OpenAPS.Settings.pumpProfile, as: Autotune.self)?.basalProfile
-                ?? storage.retrieve(OpenAPS.Settings.pumpProfile, as: Autotune.self)?.basalProfile
                 ?? [BasalProfileEntry(start: "00:00", minutes: 0, rate: 1)]
         }