Browse Source

Fix enacting suggestion

Ivan Valkou 4 years ago
parent
commit
885d3fbe2c
1 changed files with 10 additions and 8 deletions
  1. 10 8
      FreeAPS/Sources/APS/APSManager.swift

+ 10 - 8
FreeAPS/Sources/APS/APSManager.swift

@@ -286,8 +286,10 @@ final class BaseAPSManager: APSManager, Injectable {
     }
 
     func roundBolus(amount: Decimal) -> Decimal {
-        guard let pump = pumpManager, verifyStatus() else { return amount }
-        return Decimal(pump.roundToSupportedBolusVolume(units: Double(amount)))
+        guard let pump = pumpManager else { return amount }
+        let rounded = Decimal(pump.roundToSupportedBolusVolume(units: Double(amount)))
+        let maxBolus = Decimal(pump.roundToSupportedBolusVolume(units: Double(settingsManager.pumpSettings.maxBolus))) 
+        return min(rounded, maxBolus)
     }
 
     private var bolusReporter: DoseProgressReporter?
@@ -493,8 +495,8 @@ final class BaseAPSManager: APSManager, Injectable {
             return
         }
 
-        let basalPublisher: AnyPublisher<Void, Error> = {
-            guard let rate = suggested.rate, let duration = suggested.duration, verifyStatus() else {
+        let basalPublisher: AnyPublisher<Void, Error> = Deferred { () -> AnyPublisher<Void, Error> in
+            guard let rate = suggested.rate, let duration = suggested.duration, self.verifyStatus() else {
                 return Just(()).setFailureType(to: Error.self)
                     .eraseToAnyPublisher()
             }
@@ -504,10 +506,10 @@ final class BaseAPSManager: APSManager, Injectable {
                 return ()
             }
             .eraseToAnyPublisher()
-        }()
+        }.eraseToAnyPublisher()
 
-        let bolusPublisher: AnyPublisher<Void, Error> = {
-            guard let units = suggested.units, verifyStatus() else {
+        let bolusPublisher: AnyPublisher<Void, Error> = Deferred { () -> AnyPublisher<Void, Error> in
+            guard let units = suggested.units, self.verifyStatus() else {
                 return Just(()).setFailureType(to: Error.self)
                     .eraseToAnyPublisher()
             }
@@ -516,7 +518,7 @@ final class BaseAPSManager: APSManager, Injectable {
                 return ()
             }
             .eraseToAnyPublisher()
-        }()
+        }.eraseToAnyPublisher()
 
         basalPublisher
             .flatMap { bolusPublisher }