Ivan Valkou 5 лет назад
Родитель
Сommit
1a7e27526d

+ 6 - 4
FreeAPS/Sources/APS/FetchTreatmentsManager.swift

@@ -31,11 +31,13 @@ final class BaseFetchTreatmentsManager: FetchTreatmentsManager, Injectable {
                 ).eraseToAnyPublisher()
             }
             .sink { carbs, targets in
-                if carbs.isNotEmpty {
-                    self.carbsStorage.storeCarbs(carbs)
+                let filteredCarbs = carbs.filter { !($0.enteredBy?.contains(CarbsEntry.manual) ?? false) }
+                if filteredCarbs.isNotEmpty {
+                    self.carbsStorage.storeCarbs(filteredCarbs)
                 }
-                if targets.isNotEmpty {
-                    self.tempTargetsStorage.storeTempTargets(targets)
+                let filteredTargets = targets.filter { !($0.enteredBy?.contains(TempTarget.manual) ?? false) }
+                if filteredTargets.isNotEmpty {
+                    self.tempTargetsStorage.storeTempTargets(filteredTargets)
                 }
             }
             .store(in: &lifetime)

+ 2 - 2
FreeAPS/Sources/Models/TempTarget.swift

@@ -4,8 +4,8 @@ struct TempTarget: JSON, Identifiable, Equatable {
     var id = UUID().uuidString
     let name: String?
     var createdAt: Date
-    let targetTop: Decimal
-    let targetBottom: Decimal
+    let targetTop: Decimal?
+    let targetBottom: Decimal?
     let duration: Decimal
     let enteredBy: String?
     let reason: String?

+ 3 - 3
FreeAPS/Sources/Modules/AddTempTarget/View/AddTempTargetRootView.swift

@@ -78,8 +78,8 @@ extension AddTempTarget {
             var low = preset.targetBottom
             var high = preset.targetTop
             if viewModel.units == .mmolL {
-                low = low.asMmolL
-                high = high.asMmolL
+                low = low?.asMmolL
+                high = high?.asMmolL
             }
             return HStack {
                 VStack {
@@ -89,7 +89,7 @@ extension AddTempTarget {
                     }
                     HStack {
                         Text(
-                            "\(formatter.string(from: low as NSNumber)!) - \(formatter.string(from: high as NSNumber)!)"
+                            "\(formatter.string(from: (low ?? 0) as NSNumber)!) - \(formatter.string(from: (high ?? 0) as NSNumber)!)"
                         )
                         .foregroundColor(.secondary)
                         .font(.caption)

+ 1 - 1
FreeAPS/Sources/Modules/DataTable/DataTableViewModel.swift

@@ -51,7 +51,7 @@ extension DataTable {
                             units: units,
                             type: .tempTarget,
                             date: $0.createdAt,
-                            amount: $0.targetBottom,
+                            amount: $0.targetBottom ?? 0,
                             secondAmount: $0.targetTop,
                             duration: $0.duration
                         )

+ 2 - 0
FreeAPS/Sources/Modules/Home/HomeViewModel.swift

@@ -293,10 +293,12 @@ extension Home.ViewModel:
 
     func tempTargetsDidUpdate(_: [TempTarget]) {
         setupTempTargets()
+        apsManager.determineBasal().sink { _ in }.store(in: &lifetime)
     }
 
     func carbsDidUpdate(_: [CarbsEntry]) {
         setupCarbs()
+        apsManager.determineBasal().sink { _ in }.store(in: &lifetime)
     }
 
     func enactedSuggestionDidUpdate(_ suggestion: Suggestion) {

+ 4 - 4
FreeAPS/Sources/Modules/Home/View/Chart/MainChartView.swift

@@ -515,12 +515,12 @@ extension MainChartView {
         calculationQueue.async {
             var rects = tempTargets.map { tempTarget -> CGRect in
                 let x0 = timeToXCoordinate(tempTarget.createdAt.timeIntervalSince1970, fullSize: fullSize)
-                let y0 = glucoseToYCoordinate(Int(tempTarget.targetTop), fullSize: fullSize)
+                let y0 = glucoseToYCoordinate(Int(tempTarget.targetTop ?? 0), fullSize: fullSize)
                 let x1 = timeToXCoordinate(
                     tempTarget.createdAt.timeIntervalSince1970 + Int(tempTarget.duration).minutes.timeInterval,
                     fullSize: fullSize
                 )
-                let y1 = glucoseToYCoordinate(Int(tempTarget.targetBottom), fullSize: fullSize)
+                let y1 = glucoseToYCoordinate(Int(tempTarget.targetBottom ?? 0), fullSize: fullSize)
                 return CGRect(
                     x: x0,
                     y: y0 - 3,
@@ -665,11 +665,11 @@ extension MainChartView {
     }
 
     private func maxTargetValue() -> Int? {
-        tempTargets.map(\.targetTop).filter { $0 > 0 }.max().map(Int.init)
+        tempTargets.map { $0.targetTop ?? 0 }.filter { $0 > 0 }.max().map(Int.init)
     }
 
     private func minTargetValue() -> Int? {
-        tempTargets.map(\.targetBottom).filter { $0 > 0 }.min().map(Int.init)
+        tempTargets.map { $0.targetBottom ?? 0 }.filter { $0 > 0 }.min().map(Int.init)
     }
 
     private func glucoseToCoordinate(_ glucoseEntry: BloodGlucose, fullSize: CGSize) -> CGPoint {

+ 10 - 6
FreeAPS/Sources/Modules/Home/View/HomeRootView.swift

@@ -91,7 +91,7 @@ extension Home {
                     if viewModel.units == .mmolL {
                         Text(
                             targetFormatter
-                                .string(from: tempTarget.targetBottom.asMmolL as NSNumber)!
+                                .string(from: (tempTarget.targetBottom?.asMmolL ?? 0) as NSNumber)!
                         )
                         .font(.caption)
                         .foregroundColor(.secondary)
@@ -100,7 +100,8 @@ extension Home {
                                 .foregroundColor(.secondary)
                             Text(
                                 targetFormatter
-                                    .string(from: tempTarget.targetTop.asMmolL as NSNumber)! + " \(viewModel.units.rawValue)"
+                                    .string(from: (tempTarget.targetTop?.asMmolL ?? 0) as NSNumber)! +
+                                    " \(viewModel.units.rawValue)"
                             )
                             .font(.caption)
                             .foregroundColor(.secondary)
@@ -110,15 +111,18 @@ extension Home {
                         }
 
                     } else {
-                        Text(targetFormatter.string(from: tempTarget.targetBottom as NSNumber)!)
+                        Text(targetFormatter.string(from: (tempTarget.targetBottom ?? 0) as NSNumber)!)
                             .font(.caption)
                             .foregroundColor(.secondary)
                         if tempTarget.targetBottom != tempTarget.targetTop {
                             Text("-").font(.caption)
                                 .foregroundColor(.secondary)
-                            Text(targetFormatter.string(from: tempTarget.targetTop as NSNumber)! + " \(viewModel.units.rawValue)")
-                                .font(.caption)
-                                .foregroundColor(.secondary)
+                            Text(
+                                targetFormatter
+                                    .string(from: (tempTarget.targetTop ?? 0) as NSNumber)! + " \(viewModel.units.rawValue)"
+                            )
+                            .font(.caption)
+                            .foregroundColor(.secondary)
                         } else {
                             Text(viewModel.units.rawValue).font(.caption)
                                 .foregroundColor(.secondary)