Sfoglia il codice sorgente

clear bolus reporter from DeviceManager

Ivan Valkou 5 anni fa
parent
commit
58b15a9cbd

+ 13 - 5
FreeAPS/Sources/APS/APSManager.swift

@@ -125,8 +125,12 @@ final class BaseAPSManager: APSManager, Injectable {
 
 
         deviceDataManager.bolusTrigger
         deviceDataManager.bolusTrigger
             .receive(on: processQueue)
             .receive(on: processQueue)
-            .sink {
-                self.createBolusReporter()
+            .sink { bolusing in
+                if bolusing {
+                    self.createBolusReporter()
+                } else {
+                    self.clearBolusReporter()
+                }
             }
             }
             .store(in: &lifetime)
             .store(in: &lifetime)
     }
     }
@@ -543,6 +547,12 @@ final class BaseAPSManager: APSManager, Injectable {
         bolusReporter = pumpManager?.createBolusProgressReporter(reportingOn: processQueue)
         bolusReporter = pumpManager?.createBolusProgressReporter(reportingOn: processQueue)
         bolusReporter?.addObserver(self)
         bolusReporter?.addObserver(self)
     }
     }
+
+    private func clearBolusReporter() {
+        bolusReporter?.removeObserver(self)
+        bolusReporter = nil
+        bolusProgress.send(nil)
+    }
 }
 }
 
 
 private extension PumpManager {
 private extension PumpManager {
@@ -629,9 +639,7 @@ extension BaseAPSManager: DoseProgressObserver {
     func doseProgressReporterDidUpdate(_ doseProgressReporter: DoseProgressReporter) {
     func doseProgressReporterDidUpdate(_ doseProgressReporter: DoseProgressReporter) {
         bolusProgress.send(Decimal(doseProgressReporter.progress.percentComplete))
         bolusProgress.send(Decimal(doseProgressReporter.progress.percentComplete))
         if doseProgressReporter.progress.isComplete {
         if doseProgressReporter.progress.isComplete {
-            bolusReporter?.removeObserver(self)
-            bolusReporter = nil
-            bolusProgress.send(nil)
+            clearBolusReporter()
         }
         }
     }
     }
 }
 }

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

@@ -13,7 +13,7 @@ protocol DeviceDataManager {
     var pumpManager: PumpManagerUI? { get set }
     var pumpManager: PumpManagerUI? { get set }
     var pumpDisplayState: CurrentValueSubject<PumpDisplayState?, Never> { get }
     var pumpDisplayState: CurrentValueSubject<PumpDisplayState?, Never> { get }
     var recommendsLoop: PassthroughSubject<Void, Never> { get }
     var recommendsLoop: PassthroughSubject<Void, Never> { get }
-    var bolusTrigger: PassthroughSubject<Void, Never> { get }
+    var bolusTrigger: PassthroughSubject<Bool, Never> { get }
     var errorSubject: PassthroughSubject<Error, Never> { get }
     var errorSubject: PassthroughSubject<Error, Never> { get }
     var pumpName: CurrentValueSubject<String, Never> { get }
     var pumpName: CurrentValueSubject<String, Never> { get }
     var pumpExpiresAtDate: CurrentValueSubject<Date?, Never> { get }
     var pumpExpiresAtDate: CurrentValueSubject<Date?, Never> { get }
@@ -45,7 +45,7 @@ final class BaseDeviceDataManager: DeviceDataManager, Injectable {
         .distantPast
         .distantPast
 
 
     let recommendsLoop = PassthroughSubject<Void, Never>()
     let recommendsLoop = PassthroughSubject<Void, Never>()
-    let bolusTrigger = PassthroughSubject<Void, Never>()
+    let bolusTrigger = PassthroughSubject<Bool, Never>()
     let errorSubject = PassthroughSubject<Error, Never>()
     let errorSubject = PassthroughSubject<Error, Never>()
 
 
     var pumpManager: PumpManagerUI? {
     var pumpManager: PumpManagerUI? {
@@ -185,7 +185,9 @@ extension BaseDeviceDataManager: PumpManagerDelegate {
         debug(.deviceManager, "New pump status Basal: \(String(describing: status.basalDeliveryState))")
         debug(.deviceManager, "New pump status Basal: \(String(describing: status.basalDeliveryState))")
 
 
         if case .inProgress = status.bolusState {
         if case .inProgress = status.bolusState {
-            bolusTrigger.send()
+            bolusTrigger.send(true)
+        } else {
+            bolusTrigger.send(false)
         }
         }
 
 
         let batteryPercent = Int((status.pumpBatteryChargeRemaining ?? 1) * 100)
         let batteryPercent = Int((status.pumpBatteryChargeRemaining ?? 1) * 100)