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

Change order of calls; always disable all TT/ORs before enacting

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

+ 4 - 6
Trio/Sources/Shortcuts/Override/OverridePresetsIntentRequest.swift

@@ -91,6 +91,9 @@ import UIKit
         var backgroundTaskID: UIBackgroundTaskIdentifier = .invalid
         backgroundTaskID = startBackgroundTask(withName: "Override Enact")
 
+        // Disable previous overrides if necessary
+        await disableAllActiveOverrides(shouldStartBackgroundTask: false)
+
         do {
             // Get NSManagedObjectID of Preset
             let overrideID = try await fetchOverrideID(preset)
@@ -103,9 +106,6 @@ import UIKit
             overrideObject.date = Date()
             overrideObject.isUploadedToNS = false
 
-            // Disable previous overrides if necessary
-            await disableAllActiveOverrides(shouldStartBackgroundTask: false)
-
             if viewContext.hasChanges {
                 debug(.default, "Saving changes...")
 
@@ -142,9 +142,7 @@ import UIKit
         await disableAllActiveOverrides(shouldStartBackgroundTask: true)
     }
 
-    @MainActor func disableAllActiveOverrides(
-        shouldStartBackgroundTask: Bool = true
-    ) async {
+    @MainActor func disableAllActiveOverrides(shouldStartBackgroundTask: Bool = true) async {
         debug(.default, "Disabling all active overrides")
 
         var backgroundTaskID: UIBackgroundTaskIdentifier?

+ 19 - 31
Trio/Sources/Shortcuts/TempPresets/TempPresetsIntentRequest.swift

@@ -94,6 +94,9 @@ final class TempPresetsIntentRequest: BaseIntentsRequest {
         var backgroundTaskID: UIBackgroundTaskIdentifier = .invalid
         backgroundTaskID = startBackgroundTask(withName: "TempTarget Enact")
 
+        // Disable previous overrides if necessary, without starting a background task
+        await disableAllActiveTempTargets(shouldStartBackgroundTask: false)
+
         do {
             // Get NSManagedObjectID of Preset
             guard let tempTargetID = await fetchTempTargetID(preset),
@@ -105,13 +108,6 @@ final class TempPresetsIntentRequest: BaseIntentsRequest {
             tempTargetObject.date = Date()
             tempTargetObject.isUploadedToNS = false
 
-            // Disable previous overrides if necessary, without starting a background task
-            await disableAllActiveTempTargets(
-                except: tempTargetID,
-                createTempTargetRunEntry: true,
-                shouldStartBackgroundTask: false
-            )
-
             if viewContext.hasChanges {
                 debug(.default, "Saving changes...")
 
@@ -167,15 +163,11 @@ final class TempPresetsIntentRequest: BaseIntentsRequest {
     }
 
     func cancelTempTarget() async {
-        await disableAllActiveTempTargets(createTempTargetRunEntry: true, shouldStartBackgroundTask: true)
+        await disableAllActiveTempTargets(shouldStartBackgroundTask: true)
         tempTargetsStorage.saveTempTargetsToStorage([TempTarget.cancel(at: Date().addingTimeInterval(-1))])
     }
 
-    @MainActor func disableAllActiveTempTargets(
-        except tempTargetID: NSManagedObjectID? = nil,
-        createTempTargetRunEntry: Bool,
-        shouldStartBackgroundTask: Bool = true
-    ) async {
+    @MainActor func disableAllActiveTempTargets(shouldStartBackgroundTask: Bool = true) async {
         var backgroundTaskID: UIBackgroundTaskIdentifier?
 
         if shouldStartBackgroundTask {
@@ -203,28 +195,24 @@ final class TempPresetsIntentRequest: BaseIntentsRequest {
                 return
             }
 
-            // Create TempTargetRunStored entry if needed
-            if createTempTargetRunEntry {
-                // Use the first temp target to create a new TempTargetRunStored entry
-                if let canceledTempTarget = results.first {
-                    let newTempTargetRunStored = TempTargetRunStored(context: viewContext)
-                    newTempTargetRunStored.id = UUID()
-                    newTempTargetRunStored.name = canceledTempTarget.name
-                    newTempTargetRunStored.startDate = canceledTempTarget.date ?? .distantPast
-                    newTempTargetRunStored.endDate = Date()
-                    newTempTargetRunStored
-                        .target = canceledTempTarget.target ?? 0
-                    newTempTargetRunStored.tempTarget = canceledTempTarget
-                    newTempTargetRunStored.isUploadedToNS = false
-                }
+            // Create TempTargetRunStored entry
+            // Use the first temp target to create a new TempTargetRunStored entry
+            if let canceledTempTarget = results.first {
+                let newTempTargetRunStored = TempTargetRunStored(context: viewContext)
+                newTempTargetRunStored.id = UUID()
+                newTempTargetRunStored.name = canceledTempTarget.name
+                newTempTargetRunStored.startDate = canceledTempTarget.date ?? .distantPast
+                newTempTargetRunStored.endDate = Date()
+                newTempTargetRunStored
+                    .target = canceledTempTarget.target ?? 0
+                newTempTargetRunStored.tempTarget = canceledTempTarget
+                newTempTargetRunStored.isUploadedToNS = false
             }
 
             // Disable all override except the one with overrideID
             for tempTargetToCancel in results {
-                if tempTargetToCancel.objectID != tempTargetID {
-                    tempTargetToCancel.enabled = false
-                    tempTargetToCancel.isUploadedToNS = false
-                }
+                tempTargetToCancel.enabled = false
+                tempTargetToCancel.isUploadedToNS = false
             }
 
             if viewContext.hasChanges {