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

Merge branch 'charts' of https://github.com/ivalkou/freeaps into charts

Yakov Karpov 5 лет назад
Родитель
Сommit
a367b0d126
1 измененных файлов с 9 добавлено и 12 удалено
  1. 9 12
      FreeAPS/Sources/APS/APSManager.swift

+ 9 - 12
FreeAPS/Sources/APS/APSManager.swift

@@ -88,15 +88,12 @@ final class BaseAPSManager: APSManager, Injectable {
         .flatMap { _ in self.determineBasal() }
         .sink { _ in } receiveValue: { [weak self] ok in
             guard let self = self else { return }
-            guard let suggested = try? self.storage.retrieve(OpenAPS.Enact.suggested, as: Suggestion.self) else {
-                return
-            }
 
-            if ok, self.settings.closedLoop {
+            if ok {
                 self.nightscout.uploadStatus()
-                self.enactSuggested()
-            } else {
-                self.reportEnacted(suggestion: suggested, received: false)
+                if self.settings.closedLoop {
+                    self.enactSuggested()
+                }
             }
         }.store(in: &lifetime)
     }
@@ -278,7 +275,6 @@ final class BaseAPSManager: APSManager, Injectable {
         guard let suggested = try? storage.retrieve(OpenAPS.Enact.suggested, as: Suggestion.self) else { return }
 
         guard let pump = pumpManager, verifyStatus() else {
-            reportEnacted(suggestion: suggested, received: false)
             return
         }
 
@@ -309,22 +305,23 @@ final class BaseAPSManager: APSManager, Injectable {
             .sink { [weak self] completion in
                 if case let .failure(error) = completion {
                     debug(.apsManager, "Loop failed with error: \(error.localizedDescription)")
+                    self?.reportEnacted(suggestion: suggested, received: false)
+                } else {
                     self?.reportEnacted(suggestion: suggested, received: true)
                 }
-            } receiveValue: { [weak self] in
+            } receiveValue: {
                 debug(.apsManager, "Loop succeeded")
-                self?.reportEnacted(suggestion: suggested, received: true)
             }.store(in: &lifetime)
     }
 
     private func reportEnacted(suggestion: Suggestion, received: Bool) {
-        if received, suggestion.deliverAt != nil {
+        if suggestion.deliverAt != nil, suggestion.rate != nil || suggestion.units != nil {
             var enacted = suggestion
             enacted.timestamp = Date()
             enacted.recieved = received
             try? storage.save(enacted, as: OpenAPS.Enact.enacted)
+            nightscout.uploadStatus()
         }
-        nightscout.uploadStatus()
     }
 }