Преглед изворни кода

preliminary fix for bolus string issue in bolus progress view

polscm32 пре 2 година
родитељ
комит
a7fc186645

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

@@ -21,6 +21,7 @@ protocol APSManager {
     var lastLoopDate: Date { get }
     var lastLoopDateSubject: PassthroughSubject<Date, Never> { get }
     var bolusProgress: CurrentValueSubject<Decimal?, Never> { get }
+    var bolusAmount: CurrentValueSubject<Decimal?, Never> { get }
     var pumpExpiresAtDate: CurrentValueSubject<Date?, Never> { get }
     var isManualTempBasal: Bool { get }
     func enactTempBasal(rate: Double, duration: TimeInterval)
@@ -102,6 +103,7 @@ final class BaseAPSManager: APSManager, Injectable {
     let lastError = CurrentValueSubject<Error?, Never>(nil)
 
     let bolusProgress = CurrentValueSubject<Decimal?, Never>(nil)
+    let bolusAmount = CurrentValueSubject<Decimal?, Never>(nil)
 
     var pumpDisplayState: CurrentValueSubject<PumpDisplayState?, Never> {
         deviceDataManager.pumpDisplayState
@@ -449,6 +451,7 @@ final class BaseAPSManager: APSManager, Injectable {
                     self.determineBasal().sink { _ in }.store(in: &self.lifetime)
                 }
                 self.bolusProgress.send(0)
+                self.bolusAmount.send(Decimal(roundedAmout))
             }
         } receiveValue: { _ in }
             .store(in: &lifetime)
@@ -559,6 +562,7 @@ final class BaseAPSManager: APSManager, Injectable {
                     debug(.apsManager, "Announcement Bolus succeeded")
                     self.announcementsStorage.storeAnnouncements([announcement], enacted: true)
                     self.bolusProgress.send(0)
+                    self.bolusAmount.send(Decimal(roundedAmount))
                 }
             }
         case let .pump(pumpAction):
@@ -693,6 +697,7 @@ final class BaseAPSManager: APSManager, Injectable {
             }
             return pump.enactBolus(units: Double(units), automatic: true).map { _ in
                 self.bolusProgress.send(0)
+                self.bolusAmount.send(units)
                 return ()
             }
             .eraseToAnyPublisher()

+ 6 - 0
FreeAPS/Sources/Modules/Home/HomeStateModel.swift

@@ -43,6 +43,7 @@ extension Home {
         @Published var errorMessage: String? = nil
         @Published var errorDate: Date? = nil
         @Published var bolusProgress: Decimal?
+        @Published var bolusAmount: Decimal?
         @Published var eventualBG: Int?
         @Published var carbsRequired: Decimal?
         @Published var allowManualTemp = false
@@ -169,6 +170,11 @@ extension Home {
                 .weakAssign(to: \.bolusProgress, on: self)
                 .store(in: &lifetime)
 
+            apsManager.bolusAmount
+                          .receive(on: DispatchQueue.main)
+                          .weakAssign(to: \.bolusAmount, on: self)
+                          .store(in: &lifetime)
+            
             apsManager.pumpDisplayState
                 .receive(on: DispatchQueue.main)
                 .sink { [weak self] state in

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

@@ -598,11 +598,11 @@ extension Home {
 
             let colorIcon = (colorScheme == .dark ? Color.white : Color.black).opacity(0.9)
 
-            let bolusTotal = state.boluses.last?.amount ?? 0
+            let bolusTotal = state.bolusAmount ?? 0
             let bolusFraction = progress * bolusTotal
 
             let bolusString =
-                (bolusProgressFormatter.string(from: bolusFraction as NSNumber) ?? "0")
+                (numberFormatter.string(from: bolusFraction as NSNumber) ?? "0")
                     + " of " +
                     (numberFormatter.string(from: bolusTotal as NSNumber) ?? "0")
                     + NSLocalizedString(" U", comment: "Insulin unit")
@@ -629,7 +629,7 @@ extension Home {
                     }.foregroundColor(colorIcon)
                 }.padding()
 
-                bolusProgressBar(progress).offset(y: 56)
+                bolusProgressBar(progress).offset(y: 59)
             }
             .background(colorRectangle)
             .clipShape(RoundedRectangle(cornerRadius: 8))