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

Address Dans PR feedback, use Thread sanitizer

polscm32 1 год назад
Родитель
Сommit
d983fbebcc

+ 2 - 0
FreeAPS.xcodeproj/xcshareddata/xcschemes/Trio.xcscheme

@@ -348,6 +348,8 @@
       buildConfiguration = "Debug"
       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      enableThreadSanitizer = "YES"
+      enableUBSanitizer = "YES"
       launchStyle = "0"
       useCustomWorkingDirectory = "NO"
       ignoresPersistentStateOnLaunch = "NO"

+ 0 - 1
FreeAPS/Sources/Modules/Home/HomeStateModel+Setup/BatterySetup.swift

@@ -2,7 +2,6 @@ import CoreData
 import Foundation
 
 extension Home.StateModel {
-    // Setup Battery
     func setupBatteryArray() {
         Task {
             let ids = await self.fetchBattery()

+ 0 - 2
FreeAPS/Sources/Modules/Home/HomeStateModel+Setup/CarbSetup.swift

@@ -2,7 +2,6 @@ import CoreData
 import Foundation
 
 extension Home.StateModel {
-    // Setup Carbs
     func setupCarbsArray() {
         Task {
             let ids = await self.fetchCarbs()
@@ -31,7 +30,6 @@ extension Home.StateModel {
         carbsFromPersistence = objects
     }
 
-    // Setup FPUs
     func setupFPUsArray() {
         Task {
             let ids = await self.fetchFPUs()

+ 5 - 6
FreeAPS/Sources/Modules/Home/HomeStateModel+Setup/DeterminationSetup.swift

@@ -2,20 +2,19 @@ import CoreData
 import Foundation
 
 extension Home.StateModel {
-    // Setup Determinations
     func setupDeterminationsArray() {
         Task {
             // Get the NSManagedObjectIDs
-            async let enactedObjectIDs = determinationStorage
+            async let enactedObjectIds = determinationStorage
                 .fetchLastDeterminationObjectID(predicate: NSPredicate.enactedDetermination)
-            async let enactedAndNonEnactedObjectIDs = fetchCobAndIob()
+            async let enactedAndNonEnactedObjectIds = fetchCobAndIob()
 
-            let enactedIDs = await enactedObjectIDs
-            let enactedAndNonEnactedIDs = await enactedAndNonEnactedObjectIDs
+            let enactedIDs = await enactedObjectIds
+            let enactedAndNonEnactedIds = await enactedAndNonEnactedObjectIds
 
             // Get the NSManagedObjects and return them on the Main Thread
             await updateDeterminationsArray(with: enactedIDs, keyPath: \.determinationsFromPersistence)
-            await updateDeterminationsArray(with: enactedAndNonEnactedIDs, keyPath: \.enactedAndNonEnactedDeterminations)
+            await updateDeterminationsArray(with: enactedAndNonEnactedIds, keyPath: \.enactedAndNonEnactedDeterminations)
 
             await updateForecastData()
         }

+ 0 - 3
FreeAPS/Sources/Modules/Home/HomeStateModel+Setup/PumpHistorySetup.swift

@@ -2,7 +2,6 @@ import CoreData
 import Foundation
 
 extension Home.StateModel {
-    // Setup Insulin
     func setupInsulinArray() {
         Task {
             let ids = await self.fetchInsulin()
@@ -32,11 +31,9 @@ extension Home.StateModel {
     @MainActor private func updateInsulinArray(with insulinObjects: [PumpEventStored]) {
         insulinFromPersistence = insulinObjects
 
-        // Filter tempbasals
         manualTempBasal = apsManager.isManualTempBasal
         tempBasals = insulinFromPersistence.filter({ $0.tempBasal != nil })
 
-        // Suspension and resume events
         suspensions = insulinFromPersistence.filter {
             $0.type == EventType.pumpSuspend.rawValue || $0.type == EventType.pumpResume.rawValue
         }

+ 1 - 1
FreeAPS/Sources/Services/Calendar/CalendarManager.swift

@@ -184,7 +184,7 @@ final class BaseCalendarManager: CalendarManager, Injectable {
         )
 
         return await backgroundContext.perform {
-            guard let fetchedResults = results as? [[String: Any]] /* , !fetchedResults.isEmpty */ else { return nil }
+            guard let fetchedResults = results as? [[String: Any]] else { return nil }
 
             return fetchedResults.first?["objectID"] as? NSManagedObjectID
         }

+ 13 - 13
FreeAPS/Sources/Services/WatchManager/WatchManager.swift

@@ -194,12 +194,12 @@ final class BaseWatchManager: NSObject, WatchManager, Injectable {
     }
 
     @MainActor private func configureState() async {
-        let glucoseValuesIDs = await fetchGlucose()
-        async let lastDeterminationIDs = fetchlastDetermination()
-        async let latestOverrideID = fetchLatestOverride()
+        let glucoseValuesIds = await fetchGlucose()
+        async let lastDeterminationIds = fetchlastDetermination()
+        async let latestOverrideId = fetchLatestOverride()
 
-        guard let lastDeterminationID = await lastDeterminationIDs.first,
-              let latestOverrideID = await latestOverrideID
+        guard let lastDeterminationId = await lastDeterminationIds.first,
+              let latestOverrideId = await latestOverrideId
         else {
             debugPrint("\(DebuggingIdentifiers.failed) \(#file) \(#function) Failed to get last Determination/ last Override")
             return
@@ -207,14 +207,14 @@ final class BaseWatchManager: NSObject, WatchManager, Injectable {
 
         do {
             let glucoseValues: [GlucoseStored] = await CoreDataStack.shared
-                .getNSManagedObject(with: glucoseValuesIDs, context: viewContext)
+                .getNSManagedObject(with: glucoseValuesIds, context: viewContext)
 
-            let lastDetermination = try viewContext.existingObject(with: lastDeterminationID) as? OrefDetermination
-            let latestOverride = try viewContext.existingObject(with: latestOverrideID) as? OverrideStored
+            let lastDetermination = try viewContext.existingObject(with: lastDeterminationId) as? OrefDetermination
+            let latestOverride = try viewContext.existingObject(with: latestOverrideId) as? OverrideStored
 
             let recommendedInsulin = await newBolusCalc(
-                glucoseIDs: glucoseValuesIDs,
-                determinationID: lastDeterminationID
+                glucoseIds: glucoseValuesIds,
+                determinationId: lastDeterminationId
             )
 
             await MainActor.run { [weak self] in
@@ -343,10 +343,10 @@ final class BaseWatchManager: NSObject, WatchManager, Injectable {
         return description
     }
 
-    private func newBolusCalc(glucoseIDs: [NSManagedObjectID], determinationID: NSManagedObjectID) async -> Decimal {
+    private func newBolusCalc(glucoseIds: [NSManagedObjectID], determinationId: NSManagedObjectID) async -> Decimal {
         await context.perform {
-            let glucoseObjects = glucoseIDs.compactMap { self.context.object(with: $0) as? GlucoseStored }
-            guard let determination = self.context.object(with: determinationID) as? OrefDetermination else {
+            let glucoseObjects = glucoseIds.compactMap { self.context.object(with: $0) as? GlucoseStored }
+            guard let determination = self.context.object(with: determinationId) as? OrefDetermination else {
                 print("Failed to fetch determination")
                 return 0
             }