Bläddra i källkod

Release/0.1.19 (#42)

* Calculate history data on global queue

* Don't use emptry string as Nightscout secret, use nil (#41)

* Fix infinite red loop

* Bump version

Co-authored-by: Pavlo Basiuk <PavloBasiuk@users.noreply.github.com>
Ivan 5 år sedan
förälder
incheckning
47702b8d3e

+ 1 - 1
FreeAPS.xcodeproj/project.pbxproj

@@ -1101,9 +1101,9 @@
 				38E98A2C25F52DC400C0CED0 /* NSLocking+Extensions.swift */,
 				38C4D33925E9A1ED00D30B77 /* NSObject+AssociatedValues.swift */,
 				3811DE5725C9D4D500A708ED /* ProgressBar.swift */,
-				3811DEE325CA063400A708ED /* PropertyWrappers */,
 				3811DE5525C9D4D500A708ED /* Publisher.swift */,
 				38E98A3625F5509500C0CED0 /* String+Extensions.swift */,
+				3811DEE325CA063400A708ED /* PropertyWrappers */,
 			);
 			path = Helpers;
 			sourceTree = "<group>";

+ 1 - 1
FreeAPS/Resources/Config.xcconfig

@@ -1 +1 @@
-BUILD_VERSION = 0.1.18
+BUILD_VERSION = 0.1.19

+ 6 - 0
FreeAPS/Sources/APS/APSManager.swift

@@ -141,6 +141,11 @@ final class BaseAPSManager: APSManager, Injectable {
     }
 
     private func loop() {
+        guard !isLooping.value else {
+            warning(.apsManager, "Already looping, skip")
+            return
+        }
+
         debug(.apsManager, "Starting loop")
         isLooping.send(true)
         determineBasal()
@@ -198,6 +203,7 @@ final class BaseAPSManager: APSManager, Injectable {
     }
 
     func determineBasal() -> AnyPublisher<Bool, Never> {
+        debug(.apsManager, "Start determine basal")
         guard let glucose = storage.retrieve(OpenAPS.Monitor.glucose, as: [BloodGlucose].self), glucose.count >= 36 else {
             debug(.apsManager, "Not enough glucose data")
             processError(APSError.glucoseError(message: "Not enough glucose data"))

+ 3 - 1
FreeAPS/Sources/Application/FreeAPSApp.swift

@@ -41,9 +41,11 @@ private extension Swinject.Resolver {
         FreeAPSApp.loadServices()
     }
 
+    private let mainView = Main.Builder(resolver: FreeAPSApp.resolver).buildView()
+
     var body: some Scene {
         WindowGroup {
-            Main.Builder(resolver: FreeAPSApp.resolver).buildView()
+            mainView
         }
         .onChange(of: scenePhase) { newScenePhase in
             switch newScenePhase {

+ 2 - 1
FreeAPS/Sources/Modules/Bolus/BolusViewModel.swift

@@ -31,7 +31,8 @@ extension Bolus {
             if waitForSuggestionInitial {
                 apsManager.determineBasal()
                     .receive(on: DispatchQueue.main)
-                    .sink { ok in
+                    .sink { [weak self] ok in
+                        guard let self = self else { return }
                         if !ok {
                             self.waitForSuggestion = false
                             self.inslinRequired = 0

+ 6 - 4
FreeAPS/Sources/Modules/DataTable/DataTableViewModel.swift

@@ -15,7 +15,7 @@ extension DataTable {
         }
 
         private func setupItems() {
-            DispatchQueue.main.async {
+            DispatchQueue.global().async {
                 let units = self.settingsManager.settings.units
 
                 let carbs = self.provider.carbs().map {
@@ -69,9 +69,11 @@ extension DataTable {
                         Item(units: units, type: .resume, date: $0.timestamp)
                     }
 
-                self.items = [carbs, boluses, tempBasals, tempTargets, suspend, resume]
-                    .flatMap { $0 }
-                    .sorted { $0.date > $1.date }
+                DispatchQueue.main.async {
+                    self.items = [carbs, boluses, tempBasals, tempTargets, suspend, resume]
+                        .flatMap { $0 }
+                        .sorted { $0.date > $1.date }
+                }
             }
         }
 

+ 1 - 1
FreeAPS/Sources/Services/Network/NightscoutAPI.swift

@@ -5,7 +5,7 @@ import Foundation
 class NightscoutAPI {
     init(url: URL, secret: String? = nil) {
         self.url = url
-        self.secret = secret
+        self.secret = secret?.nonEmpty
     }
 
     private enum Config {