Просмотр исходного кода

Modify and complete override handling
* Make sure to not override override.date when canceling a profile in home state
* Adjust cancelation and overrideRun creation when duration runs out
* Minor stuff

Deniz Cengiz 1 год назад
Родитель
Сommit
94e0b26f3b

+ 1 - 1
FreeAPS/Sources/APS/Storage/OverrideStorage.swift

@@ -192,7 +192,7 @@ final class BaseOverrideStorage: OverrideStorage, Injectable {
 
         return await backgroundContext.perform {
             return fetchedOverrides.map { override in
-                let duration = override.indefinite ? 86400 : override.duration ?? 0 // 86400 min = 1 day
+                let duration = override.indefinite ? 1440 : override.duration ?? 0 // 1440 min = 1 day
                 return NightscoutExercise(
                     duration: Int(truncating: duration),
                     eventType: OverrideStored.EventType.nsExercise,

+ 3 - 2
FreeAPS/Sources/Modules/Home/HomeStateModel.swift

@@ -228,7 +228,8 @@ extension Home {
             do {
                 let profileToCancel = try viewContext.existingObject(with: id) as? OverrideStored
                 profileToCancel?.enabled = false
-                profileToCancel?.date = Date()
+
+                await saveToOverrideRunStored(withID: id)
 
                 guard viewContext.hasChanges else { return }
                 try viewContext.save()
@@ -247,7 +248,7 @@ extension Home {
             let startTime = calendar.date(byAdding: offsetComponents, to: date)!
 
             let bolusesForCurrentDay = boluses.filter { $0.timestamp ?? .distantPast >= startTime }
-            let totalBolus = bolusesForCurrentDay.map { Double($0.bolus?.amount ?? 0.0) }.reduce(0.0, +)
+            let totalBolus = bolusesForCurrentDay.map { Double(truncating: $0.bolus?.amount ?? 0.0) }.reduce(0.0, +)
             roundedTotalBolus = Decimal(round(100 * Double(totalBolus)) / 100).formatted()
 
             return roundedTotalBolus

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

@@ -231,7 +231,8 @@ extension Home {
                 } else {
                     /// Do not show the Override anymore
                     Task {
-                        await state.cancelProfile(withID: latestOverride.objectID)
+                        guard let objectID = self.latestOverride.first?.objectID else { return }
+                        await state.cancelProfile(withID: objectID)
                     }
                 }
             }
@@ -563,7 +564,6 @@ extension Home {
                             Button("Yes", role: .destructive) {
                                 Task {
                                     guard let objectID = latestOverride.first?.objectID else { return }
-                                    await state.saveToOverrideRunStored(withID: objectID)
                                     await state.cancelProfile(withID: objectID)
                                 }
                             }