Преглед на файлове

Allow multiple TTs to be scheduled; activate scheduled TTs also in orefafter time has expired

polscm32 aka Marvout преди 1 година
родител
ревизия
89a415ca41
променени са 1 файла, в които са добавени 11 реда и са изтрити 3 реда
  1. 11 3
      FreeAPS/Sources/Modules/Adjustments/AdjustmentsStateModel.swift

+ 11 - 3
FreeAPS/Sources/Modules/Adjustments/AdjustmentsStateModel.swift

@@ -701,6 +701,9 @@ extension OverrideConfig.StateModel {
 
 
     // Save scheduled Preset to Core Data
     // Save scheduled Preset to Core Data
     func saveScheduledTempTarget() async {
     func saveScheduledTempTarget() async {
+        // Save date to a constant to allow multiple executions of this function at the same time, i.e. allowing for scheduling multiple TTs
+        let date = self.date
+        
         guard date > Date() else { return }
         guard date > Date() else { return }
 
 
         let tempTarget = TempTarget(
         let tempTarget = TempTarget(
@@ -723,9 +726,14 @@ extension OverrideConfig.StateModel {
 
 
         // If the scheduled date equals Date() enable the Preset
         // If the scheduled date equals Date() enable the Preset
         Task {
         Task {
+            // First wait until the time has passed
             await waitUntilDate(date)
             await waitUntilDate(date)
-
+            // Then disable previous Temp Targets
+            await disableAllActiveTempTargets(createTempTargetRunEntry: true)
+            // Set 'enabled' property to true, i.e. enacting it in Core Data
             await enableScheduledTempTarget(for: date)
             await enableScheduledTempTarget(for: date)
+            // Activate the scheduled TT also for oref
+            tempTargetStorage.saveTempTargetsToStorage([tempTarget])
         }
         }
     }
     }
 
 
@@ -746,7 +754,7 @@ extension OverrideConfig.StateModel {
                     try viewContext.save()
                     try viewContext.save()
 
 
                     // Update Buttons in Adjustments View
                     // Update Buttons in Adjustments View
-                    isTempTargetEnabled.toggle()
+                    isTempTargetEnabled = true
                 }
                 }
             } catch {
             } catch {
                 debugPrint("Failed to enable the Temp Target for the specified date: \(error.localizedDescription)")
                 debugPrint("Failed to enable the Temp Target for the specified date: \(error.localizedDescription)")
@@ -793,7 +801,7 @@ extension OverrideConfig.StateModel {
         await resetTempTargetState()
         await resetTempTargetState()
 
 
         // Update View
         // Update View
-        isTempTargetEnabled.toggle()
+        isTempTargetEnabled = true
         updateLatestTempTargetConfiguration()
         updateLatestTempTargetConfiguration()
     }
     }