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

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

polscm32 aka Marvout 1 год назад
Родитель
Сommit
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
     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 }
 
         let tempTarget = TempTarget(
@@ -723,9 +726,14 @@ extension OverrideConfig.StateModel {
 
         // If the scheduled date equals Date() enable the Preset
         Task {
+            // First wait until the time has passed
             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)
+            // Activate the scheduled TT also for oref
+            tempTargetStorage.saveTempTargetsToStorage([tempTarget])
         }
     }
 
@@ -746,7 +754,7 @@ extension OverrideConfig.StateModel {
                     try viewContext.save()
 
                     // Update Buttons in Adjustments View
-                    isTempTargetEnabled.toggle()
+                    isTempTargetEnabled = true
                 }
             } catch {
                 debugPrint("Failed to enable the Temp Target for the specified date: \(error.localizedDescription)")
@@ -793,7 +801,7 @@ extension OverrideConfig.StateModel {
         await resetTempTargetState()
 
         // Update View
-        isTempTargetEnabled.toggle()
+        isTempTargetEnabled = true
         updateLatestTempTargetConfiguration()
     }