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

force the update of the state after bolus

(cherry picked from commit a77aece9c417f947250d83b7781129daf8664fa1)
avouspierre 3 лет назад
Родитель
Сommit
a6401ee017
2 измененных файлов с 28 добавлено и 3 удалено
  1. 27 2
      FreeAPS/Sources/APS/APSManager.swift
  2. 1 1
      FreeAPS/Sources/APS/DeviceDataManager.swift

+ 27 - 2
FreeAPS/Sources/APS/APSManager.swift

@@ -3,6 +3,7 @@ import Foundation
 import LoopKit
 import LoopKitUI
 import OmniBLE
+import OmniKit
 import RileyLinkKit
 import SwiftDate
 import Swinject
@@ -476,7 +477,16 @@ final class BaseAPSManager: APSManager, Injectable {
             let roundedAmount = pump.roundToSupportedBolusVolume(units: Double(amount))
             pump.enactBolus(units: roundedAmount, activationType: .manualRecommendationAccepted) { error in
                 if let error = error {
-                    warning(.apsManager, "Announcement Bolus failed with error: \(error.localizedDescription)")
+                    // warning(.apsManager, "Announcement Bolus failed with error: \(error.localizedDescription)")
+                    switch error {
+                    case .uncertainDelivery:
+                        // Do not generate notification on uncertain delivery error
+                        break
+                    default:
+                        // Do not generate notifications for automatic boluses that fail.
+                        warning(.apsManager, "Announcement Bolus failed with error: \(error.localizedDescription)")
+                    }
+
                 } else {
                     debug(.apsManager, "Announcement Bolus succeeded")
                     self.announcementsStorage.storeAnnouncements([announcement], enacted: true)
@@ -705,11 +715,26 @@ final class BaseAPSManager: APSManager, Injectable {
         bolusReporter?.addObserver(self)
     }
 
+    private func updateStatus() {
+        debug(.apsManager, "force update status")
+        guard let pump = pumpManager else {
+            return
+        }
+
+        if let omnipod = pump as? OmnipodPumpManager {
+            omnipod.getPodStatus { _ in }
+        }
+        if let omnipodBLE = pump as? OmniBLEPumpManager {
+            omnipodBLE.getPodStatus { _ in }
+        }
+    }
+
     private func clearBolusReporter() {
         bolusReporter?.removeObserver(self)
         bolusReporter = nil
-        processQueue.asyncAfter(deadline: .now() + 1) {
+        processQueue.asyncAfter(deadline: .now() + 0.5) {
             self.bolusProgress.send(nil)
+            self.updateStatus()
         }
     }
 }

+ 1 - 1
FreeAPS/Sources/APS/DeviceDataManager.swift

@@ -162,7 +162,7 @@ final class BaseDeviceDataManager: DeviceDataManager, Injectable {
                 }
             }
         }
-        .timeout(60, scheduler: processQueue)
+        .timeout(20, scheduler: processQueue)
         .replaceError(with: false)
         .replaceEmpty(with: false)
         .sink(receiveValue: updateUpdateFinished)