polscm32 2 лет назад
Родитель
Сommit
5f60e92f22

+ 0 - 45
FreeAPS.xcworkspace/xcshareddata/swiftpm/Package.resolved

@@ -20,24 +20,6 @@
         }
       },
       {
-        "package": "swift-algorithms",
-        "repositoryURL": "https://github.com/apple/swift-algorithms",
-        "state": {
-          "branch": null,
-          "revision": "2327673b0e9c7e90e6b1826376526ec3627210e4",
-          "version": "0.2.1"
-        }
-      },
-      {
-        "package": "swift-numerics",
-        "repositoryURL": "https://github.com/apple/swift-numerics",
-        "state": {
-          "branch": null,
-          "revision": "6583ac70c326c3ee080c1d42d9ca3361dca816cd",
-          "version": "0.1.0"
-        }
-      },
-      {
         "package": "SwiftCharts",
         "repositoryURL": "https://github.com/ivanschuetz/SwiftCharts",
         "state": {
@@ -45,33 +27,6 @@
           "revision": "c354c1945bb35a1f01b665b22474f6db28cba4a2",
           "version": null
         }
-      },
-      {
-        "package": "SwiftDate",
-        "repositoryURL": "https://github.com/malcommac/SwiftDate",
-        "state": {
-          "branch": null,
-          "revision": "6190d0cefff3013e77ed567e6b074f324e5c5bf5",
-          "version": "6.3.1"
-        }
-      },
-      {
-        "package": "SwiftMessages",
-        "repositoryURL": "https://github.com/SwiftKickMobile/SwiftMessages",
-        "state": {
-          "branch": null,
-          "revision": "b29dd21090b708aa0ae9ecbaf6e2d0487028dc3f",
-          "version": "9.0.6"
-        }
-      },
-      {
-        "package": "Swinject",
-        "repositoryURL": "https://github.com/Swinject/Swinject",
-        "state": {
-          "branch": null,
-          "revision": "8bc503e60965298984fb58cf47b71c541449fe2a",
-          "version": "2.8.3"
-        }
       }
     ]
   },

+ 14 - 12
FreeAPS/Sources/APS/FetchGlucoseManager.swift

@@ -32,7 +32,6 @@ final class BaseFetchGlucoseManager: FetchGlucoseManager, Injectable {
     private lazy var dexcomSourceG7 = DexcomSourceG7(glucoseStorage: glucoseStorage, glucoseManager: self)
     private lazy var simulatorSource = GlucoseSimulatorSource()
 
-    // TODO: - test if we need to use the viewContext here
     private let context = CoreDataStack.shared.persistentContainer.newBackgroundContext()
 
     init(resolver: Resolver) {
@@ -100,8 +99,9 @@ final class BaseFetchGlucoseManager: FetchGlucoseManager, Injectable {
     }
 
     private func fetchGlucose() -> [GlucoseStored]? {
-        CoreDataStack.shared.fetchEntities(
+        CoreDataStack.shared.fetchEntities2(
             ofType: GlucoseStored.self,
+            onContext: context,
             predicate: NSPredicate.predicateFor30MinAgo,
             key: "date",
             ascending: false,
@@ -110,16 +110,18 @@ final class BaseFetchGlucoseManager: FetchGlucoseManager, Injectable {
     }
 
     private func processGlucose() -> [BloodGlucose] {
-        guard let results = fetchGlucose() else { return [] }
-        return results.map { result in
-            BloodGlucose(
-                date: Decimal(result.date?.timeIntervalSince1970 ?? Date().timeIntervalSince1970) * 1000,
-                dateString: result.date ?? Date(),
-                unfiltered: Decimal(result.glucose),
-                filtered: Decimal(result.glucose),
-                noise: nil,
-                type: ""
-            )
+        context.performAndWait {
+            guard let results = fetchGlucose() else { return [] }
+            return results.map { result in
+                BloodGlucose(
+                    date: Decimal(result.date?.timeIntervalSince1970 ?? Date().timeIntervalSince1970) * 1000,
+                    dateString: result.date ?? Date(),
+                    unfiltered: Decimal(result.glucose),
+                    filtered: Decimal(result.glucose),
+                    noise: nil,
+                    type: ""
+                )
+            }
         }
     }
 

+ 15 - 12
FreeAPS/Sources/APS/Storage/GlucoseStorage.swift

@@ -244,8 +244,9 @@ final class BaseGlucoseStorage: GlucoseStorage, Injectable {
 
     func fetchManualGlucose() -> [GlucoseStored] {
         let predicate = NSPredicate.manualGlucose
-        return CoreDataStack.shared.fetchEntities(
+        return CoreDataStack.shared.fetchEntities2(
             ofType: GlucoseStored.self,
+            onContext: coredataContext,
             predicate: predicate,
             key: "date",
             ascending: false,
@@ -267,18 +268,20 @@ final class BaseGlucoseStorage: GlucoseStorage, Injectable {
     }
 
     private func processManualGlucose() -> [BloodGlucose] {
-        let fetchedResults = fetchManualGlucose()
-        let glucoseArray = fetchedResults.map { result in
-            BloodGlucose(
-                date: Decimal(result.date?.timeIntervalSince1970 ?? Date().timeIntervalSince1970) * 1000,
-                dateString: result.date ?? Date(),
-                unfiltered: Decimal(result.glucose),
-                filtered: Decimal(result.glucose),
-                noise: nil,
-                type: ""
-            )
+        coredataContext.performAndWait {
+            let fetchedResults = fetchManualGlucose()
+            let glucoseArray = fetchedResults.map { result in
+                BloodGlucose(
+                    date: Decimal(result.date?.timeIntervalSince1970 ?? Date().timeIntervalSince1970) * 1000,
+                    dateString: result.date ?? Date(),
+                    unfiltered: Decimal(result.glucose),
+                    filtered: Decimal(result.glucose),
+                    noise: nil,
+                    type: ""
+                )
+            }
+            return glucoseArray
         }
-        return glucoseArray
     }
 
     private func processGlucose() -> [BloodGlucose] {

+ 4 - 2
FreeAPS/Sources/Shortcuts/State/ListStateIntent.swift

@@ -17,8 +17,10 @@ import Foundation
     }
 
     @MainActor func perform() async throws -> some ReturnsValue<StateiAPSResults> & ShowsSnippetView {
-        let glucoseValues = try? stateIntent.getLastGlucose()
-        let iob_cob_value = try? stateIntent.getIobAndCob()
+        let context = CoreDataStack.shared.persistentContainer.viewContext
+        
+        let glucoseValues = try? stateIntent.getLastGlucose(onContext: context)
+        let iob_cob_value = try? stateIntent.getIobAndCob(onContext: context)
 
         guard let glucoseValue = glucoseValues else { throw StateIntentError.NoBG }
         guard let iob_cob = iob_cob_value else { throw StateIntentError.NoIOBCOB }

+ 7 - 4
FreeAPS/Sources/Shortcuts/State/StateIntentRequest.swift

@@ -1,4 +1,5 @@
 import AppIntents
+import CoreData
 import Foundation
 
 enum StateIntentError: Error {
@@ -56,10 +57,11 @@ enum StateIntentError: Error {
 @available(iOS 16.0, *) final class StateIntentRequest: BaseIntentsRequest {
     let moc = CoreDataStack.shared.persistentContainer.newBackgroundContext()
 
-    func getLastGlucose() throws -> (dateGlucose: Date, glucose: String, trend: String, delta: String) {
+    func getLastGlucose(onContext: NSManagedObjectContext) throws -> (dateGlucose: Date, glucose: String, trend: String, delta: String) {
         do {
-            let results = CoreDataStack.shared.fetchEntities(
+            let results = CoreDataStack.shared.fetchEntities2(
                 ofType: GlucoseStored.self,
+                onContext: onContext,
                 predicate: NSPredicate.predicateFor30MinAgo,
                 key: "date",
                 ascending: false,
@@ -97,9 +99,10 @@ enum StateIntentError: Error {
         }
     }
 
-    func getIobAndCob() throws -> (iob: Double, cob: Double) {
-        let results = CoreDataStack.shared.fetchEntities(
+    func getIobAndCob(onContext: NSManagedObjectContext) throws -> (iob: Double, cob: Double) {
+        let results = CoreDataStack.shared.fetchEntities2(
             ofType: OrefDetermination.self,
+            onContext: onContext,
             predicate: NSPredicate.enactedDetermination,
             key: "deliverAt",
             ascending: false,