Explorar o código

fix: reject multiple calendar updates on new glucose data

fixes nightscout/trio-dev#276
Andreas Stokholm hai 1 ano
pai
achega
e07dc0c79b
Modificáronse 1 ficheiros con 8 adicións e 0 borrados
  1. 8 0
      FreeAPS/Sources/Services/Calendar/CalendarManager.swift

+ 8 - 0
FreeAPS/Sources/Services/Calendar/CalendarManager.swift

@@ -21,6 +21,7 @@ final class BaseCalendarManager: CalendarManager, Injectable {
 
 
     private var coreDataPublisher: AnyPublisher<Set<NSManagedObject>, Never>?
     private var coreDataPublisher: AnyPublisher<Set<NSManagedObject>, Never>?
     private var subscriptions = Set<AnyCancellable>()
     private var subscriptions = Set<AnyCancellable>()
+    private var lastCalendarUpdate = Date()
 
 
     private var glucoseFormatter: NumberFormatter {
     private var glucoseFormatter: NumberFormatter {
         let formatter = NumberFormatter()
         let formatter = NumberFormatter()
@@ -211,6 +212,13 @@ final class BaseCalendarManager: CalendarManager, Injectable {
         guard settingsManager.settings.useCalendar, let calendar = currentCalendar,
         guard settingsManager.settings.useCalendar, let calendar = currentCalendar,
               let determinationId = await getLastDetermination() else { return }
               let determinationId = await getLastDetermination() else { return }
 
 
+        // Ignore the update if the last one was less than 10 seconds ago
+        if lastCalendarUpdate.timeIntervalSinceNow > -10 {
+            return
+        }
+
+        lastCalendarUpdate = Date()
+
         let glucoseIds = await fetchGlucose()
         let glucoseIds = await fetchGlucose()
 
 
         deleteAllEvents(in: calendar)
         deleteAllEvents(in: calendar)