Przeglądaj źródła

Merge pull request #311 from mountrcg/fix-renewTT

Fix TT activation: Wait for disabling current TT before enacting new one
marv-out 1 rok temu
rodzic
commit
1a56bed279

+ 8 - 7
Trio/Sources/Modules/Adjustments/AdjustmentsStateModel+Extensions/AdjustmentsStateModel+Overrides.swift

@@ -8,15 +8,16 @@ extension Adjustments.StateModel {
     /// Enacts an Override Preset by enabling it and disabling others.
     /// Enacts an Override Preset by enabling it and disabling others.
     @MainActor func enactOverridePreset(withID id: NSManagedObjectID) async {
     @MainActor func enactOverridePreset(withID id: NSManagedObjectID) async {
         do {
         do {
-            let overrideToEnact = try viewContext.existingObject(with: id) as? OverrideStored
-            overrideToEnact?.enabled = true
-            overrideToEnact?.date = Date()
-            overrideToEnact?.isUploadedToNS = false
-            isOverrideEnabled = true
-
-            await disableAllActiveOverrides(except: id, createOverrideRunEntry: currentActiveOverride != nil)
+            guard let overrideToEnact = try viewContext.existingObject(with: id) as? OverrideStored else { return }
+            /// Wait for currently active override to be disabled before storing the new one
+            await disableAllActiveOverrides(createOverrideRunEntry: currentActiveOverride != nil)
             await resetStateVariables()
             await resetStateVariables()
 
 
+            overrideToEnact.enabled = true
+            overrideToEnact.date = Date()
+            overrideToEnact.isUploadedToNS = false
+            isOverrideEnabled = true
+
             guard viewContext.hasChanges else { return }
             guard viewContext.hasChanges else { return }
             try viewContext.save()
             try viewContext.save()
 
 

+ 12 - 16
Trio/Sources/Modules/Adjustments/AdjustmentsStateModel+Extensions/AdjustmentsStateModel+TempTargets.swift

@@ -242,19 +242,15 @@ extension Adjustments.StateModel {
     /// Enacts a Temp Target preset by enabling it.
     /// Enacts a Temp Target preset by enabling it.
     @MainActor func enactTempTargetPreset(withID id: NSManagedObjectID) async {
     @MainActor func enactTempTargetPreset(withID id: NSManagedObjectID) async {
         do {
         do {
-            let tempTargetToEnact = try viewContext.existingObject(with: id) as? TempTargetStored
-            tempTargetToEnact?.enabled = true
-            tempTargetToEnact?.date = Date()
-            tempTargetToEnact?.isUploadedToNS = false
+            guard let tempTargetToEnact = try viewContext.existingObject(with: id) as? TempTargetStored else { return }
+            /// Wait for currently active temp target to be disabled before storing the new temp target
+            await disableAllActiveTempTargets(createTempTargetRunEntry: true)
+            await resetTempTargetState()
+
+            tempTargetToEnact.enabled = true
+            tempTargetToEnact.date = Date()
+            tempTargetToEnact.isUploadedToNS = false
             isTempTargetEnabled = true
             isTempTargetEnabled = true
-
-            async let disableTempTargets: () = disableAllActiveTempTargets(
-                except: id,
-                createTempTargetRunEntry: currentActiveTempTarget != nil
-            )
-            async let resetState: () = resetTempTargetState()
-            _ = await (disableTempTargets, resetState)
-
             if viewContext.hasChanges {
             if viewContext.hasChanges {
                 try viewContext.save()
                 try viewContext.save()
             }
             }
@@ -262,11 +258,11 @@ extension Adjustments.StateModel {
             updateLatestTempTargetConfiguration()
             updateLatestTempTargetConfiguration()
 
 
             let tempTarget = TempTarget(
             let tempTarget = TempTarget(
-                name: tempTargetToEnact?.name,
+                name: tempTargetToEnact.name,
                 createdAt: Date(),
                 createdAt: Date(),
-                targetTop: tempTargetToEnact?.target?.decimalValue,
-                targetBottom: tempTargetToEnact?.target?.decimalValue,
-                duration: tempTargetToEnact?.duration?.decimalValue ?? 0,
+                targetTop: tempTargetToEnact.target?.decimalValue,
+                targetBottom: tempTargetToEnact.target?.decimalValue,
+                duration: tempTargetToEnact.duration?.decimalValue ?? 0,
                 enteredBy: TempTarget.local,
                 enteredBy: TempTarget.local,
                 reason: TempTarget.custom,
                 reason: TempTarget.custom,
                 isPreset: true,
                 isPreset: true,

+ 2 - 2
Trio/Sources/Modules/Adjustments/View/TempTargets/EditTempTargetForm.swift

@@ -312,9 +312,9 @@ struct EditTempTargetForm: View {
                         Task {
                         Task {
                             // TODO: - Creating a Run entry is probably needed for Overrides as well and the reason for "jumping" Overrides?
                             // TODO: - Creating a Run entry is probably needed for Overrides as well and the reason for "jumping" Overrides?
                             // Disable previous active Temp Targets
                             // Disable previous active Temp Targets
-                            await state.disableAllActiveOverrides(
+                            await state.disableAllActiveTempTargets(
                                 except: currentActiveTempTarget.objectID,
                                 except: currentActiveTempTarget.objectID,
-                                createOverrideRunEntry: false
+                                createTempTargetRunEntry: false
                             )
                             )
 
 
                             // If the temp target which currently gets edited is enabled, then store it to the Temp Target JSON so that oref uses it
                             // If the temp target which currently gets edited is enabled, then store it to the Temp Target JSON so that oref uses it

+ 6 - 2
Trio/Sources/Modules/DataTable/View/DataTableRootView.swift

@@ -250,8 +250,12 @@ extension DataTable {
             }
             }
 
 
             let combined = overrides + tempTargets
             let combined = overrides + tempTargets
-            return combined.sorted(by: { $0.startDate > $1.startDate })
-        }
+            return combined.sorted {
+                if $0.startDate == $1.startDate {
+                    return $0.endDate > $1.endDate
+                }
+                return $0.startDate > $1.startDate
+            } }
 
 
         private struct AdjustmentItem: Identifiable {
         private struct AdjustmentItem: Identifiable {
             let id: NSManagedObjectID
             let id: NSManagedObjectID