polscm32 2 år sedan
förälder
incheckning
6fa256f974
2 ändrade filer med 11 tillägg och 143 borttagningar
  1. 11 142
      FreeAPS/Sources/APS/APSManager.swift
  2. 0 1
      FreeAPS/Sources/APS/Storage/PumpHistoryStorage.swift

+ 11 - 142
FreeAPS/Sources/APS/APSManager.swift

@@ -682,6 +682,7 @@ final class BaseAPSManager: APSManager, Injectable {
 
             let rateValue = determination.rate
             let durationValue = determination.duration
+            let smbToDeliver = determination.smbToDeliver
 
             let basalPublisher: AnyPublisher<Void, Error> = Deferred { () -> AnyPublisher<Void, Error> in
                 if let error = self.verifyStatus() {
@@ -697,15 +698,14 @@ final class BaseAPSManager: APSManager, Injectable {
                     unitsPerHour: Double(truncating: rate as NSNumber),
                     for: TimeInterval(durationValue * 60)
                 ).map { _ in
-                    self.privateContext.perform {
-                        let temp = TempBasal(
-                            duration: Int(durationValue),
-                            rate: ((rateValue ?? 0) as NSDecimalNumber) as Decimal,
-                            temp: .absolute,
-                            timestamp: Date()
-                        )
-                        self.storage.save(temp, as: OpenAPS.Monitor.tempBasal)
-                    }
+                    let temp = TempBasal(
+                        duration: Int(durationValue),
+                        rate: ((rateValue ?? 0) as NSDecimalNumber) as Decimal,
+                        temp: .absolute,
+                        timestamp: Date()
+                    )
+                    self.storage.save(temp, as: OpenAPS.Monitor.tempBasal)
+
                     return ()
                 }
                 .eraseToAnyPublisher()
@@ -715,12 +715,12 @@ final class BaseAPSManager: APSManager, Injectable {
                 if let error = self.verifyStatus() {
                     return Fail(error: error).eraseToAnyPublisher()
                 }
-                guard let smbToDeliver = determination.smbToDeliver else {
+                guard let smbAmount = smbToDeliver else {
                     debug(.apsManager, "No bolus required")
                     return Just(()).setFailureType(to: Error.self)
                         .eraseToAnyPublisher()
                 }
-                return pump.enactBolus(units: Double(truncating: smbToDeliver), automatic: true).map { _ in
+                return pump.enactBolus(units: Double(truncating: smbAmount), automatic: true).map { _ in
                     self.bolusProgress.send(0)
                     return ()
                 }
@@ -732,137 +732,6 @@ final class BaseAPSManager: APSManager, Injectable {
         .eraseToAnyPublisher()
     }
 
-//    private func enactDetermination() -> AnyPublisher<Void, Error> {
-//        // Fetch determination within the correct context
-//        Future<OrefDetermination?, Error> { promise in
-//            self.privateContext.perform {
-//                let determination = self.fetchDetermination()
-//                promise(.success(determination))
-//            }
-//        }
-//        .flatMap { determination -> AnyPublisher<Void, Error> in
-//            guard let determination = determination else {
-//                return Fail(error: APSError.apsError(message: "Determination not found")).eraseToAnyPublisher()
-//            }
-//
-//            guard let pump = self.pumpManager else {
-//                return Fail(error: APSError.apsError(message: "Pump not set")).eraseToAnyPublisher()
-//            }
-//
-//            // Unable to do temp basal during manual temp basal 😁
-//            if self.isManualTempBasal {
-//                return Fail(error: APSError.manualBasalTemp(message: "Loop not possible during the manual basal temp"))
-//                    .eraseToAnyPublisher()
-//            }
-//
-//            let basalPublisher: AnyPublisher<Void, Error> = Deferred { () -> AnyPublisher<Void, Error> in
-//                if let error = self.verifyStatus() {
-//                    return Fail(error: error).eraseToAnyPublisher()
-//                }
-//
-//                guard let rate = determination.rate else {
-//                    debug(.apsManager, "No temp required")
-//                    return Just(()).setFailureType(to: Error.self)
-//                        .eraseToAnyPublisher()
-//                }
-//                return pump.enactTempBasal(
-//                    unitsPerHour: Double(truncating: rate as NSNumber),
-//                    for: TimeInterval((determination.duration ?? 0) * 60)
-//                ).map { _ in
-//                    let temp = TempBasal(
-//                        duration: Int(determination.duration ?? 0),
-//                        rate: ((determination.rate ?? 0) as NSDecimalNumber) as Decimal,
-//                        temp: .absolute,
-//                        timestamp: Date()
-//                    )
-//                    self.storage.save(temp, as: OpenAPS.Monitor.tempBasal)
-//                    return ()
-//                }
-//                .eraseToAnyPublisher()
-//            }.eraseToAnyPublisher()
-//
-//            let bolusPublisher: AnyPublisher<Void, Error> = Deferred { () -> AnyPublisher<Void, Error> in
-//                if let error = self.verifyStatus() {
-//                    return Fail(error: error).eraseToAnyPublisher()
-//                }
-//                guard let smbToDeliver = determination.smbToDeliver else {
-//                    debug(.apsManager, "No bolus required")
-//                    return Just(()).setFailureType(to: Error.self)
-//                        .eraseToAnyPublisher()
-//                }
-//                return pump.enactBolus(units: Double(truncating: smbToDeliver), automatic: true).map { _ in
-//                    self.bolusProgress.send(0)
-//                    return ()
-//                }
-//                .eraseToAnyPublisher()
-//            }.eraseToAnyPublisher()
-//
-//            return basalPublisher.flatMap { bolusPublisher }.eraseToAnyPublisher()
-//        }
-//        .eraseToAnyPublisher()
-//    }
-
-//    private func enactDetermination() -> AnyPublisher<Void, Error> {
-//            guard let determination = fetchDetermination() else {
-//                return Fail(error: APSError.apsError(message: "Determination not found")).eraseToAnyPublisher()
-//            }
-//
-//            guard let pump = pumpManager else {
-//                return Fail(error: APSError.apsError(message: "Pump not set")).eraseToAnyPublisher()
-//            }
-//
-//            // unable to do temp basal during manual temp basal 😁
-//            if isManualTempBasal {
-//                return Fail(error: APSError.manualBasalTemp(message: "Loop not possible during the manual basal temp"))
-//                    .eraseToAnyPublisher()
-//            }
-//
-//            let basalPublisher: AnyPublisher<Void, Error> = Deferred { () -> AnyPublisher<Void, Error> in
-//                if let error = self.verifyStatus() {
-//                    return Fail(error: error).eraseToAnyPublisher()
-//                }
-//
-//                guard let rate = determination.rate else {
-//                    debug(.apsManager, "No temp required")
-//                    return Just(()).setFailureType(to: Error.self)
-//                        .eraseToAnyPublisher()
-//                }
-//                return pump.enactTempBasal(
-//                    unitsPerHour: Double(truncating: rate),
-//                    for: TimeInterval(determination.duration * 60)
-//                ).map { _ in
-//                    let temp = TempBasal(
-//                        duration: Int(determination.duration),
-//                        rate: ((determination.rate ?? 0) as NSDecimalNumber) as Decimal,
-//                        temp: .absolute,
-//                        timestamp: Date()
-//                    )
-//                    self.storage.save(temp, as: OpenAPS.Monitor.tempBasal)
-//                    return ()
-//                }
-//                .eraseToAnyPublisher()
-//            }.eraseToAnyPublisher()
-//
-//            let bolusPublisher: AnyPublisher<Void, Error> = Deferred { () -> AnyPublisher<Void, Error> in
-//                if let error = self.verifyStatus() {
-//                    return Fail(error: error).eraseToAnyPublisher()
-//                }
-//                guard let smbToDeliver = determination.smbToDeliver else {
-//                    debug(.apsManager, "No bolus required")
-//                    return Just(()).setFailureType(to: Error.self)
-//                        .eraseToAnyPublisher()
-//                }
-//                return pump.enactBolus(units: Double(truncating: smbToDeliver), automatic: true).map { _ in
-//                    self.bolusProgress.send(0)
-//                    return ()
-//                }
-//                .eraseToAnyPublisher()
-//            }.eraseToAnyPublisher()
-//
-//            return basalPublisher.flatMap { bolusPublisher }.eraseToAnyPublisher()
-//
-//    }
-
     private func reportEnacted(received: Bool) {
         privateContext.performAndWait {
             guard let determination = fetchDetermination(), determination.deliverAt != nil else {

+ 0 - 1
FreeAPS/Sources/APS/Storage/PumpHistoryStorage.swift

@@ -54,7 +54,6 @@ final class BasePumpHistoryStorage: PumpHistoryStorage, Injectable {
                         newBolusEntry.amount = amount as? NSDecimalNumber
                         newBolusEntry.isExternal = dose.manuallyEntered
                         newBolusEntry.isSMB = dose.automatic ?? true
-                        // TODO: - do we need duration here?
 
                         do {
                             guard self.context.hasChanges else { return }