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

Merge pull request #277 from AndreasStokholm/beta-fixes-2nd-iteration

Reject multiple calendar updates on new glucose data (fixes #276)
Deniz Cengiz 1 год назад
Родитель
Сommit
1698ee1e12
1 измененных файлов с 8 добавлено и 0 удалено
  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 subscriptions = Set<AnyCancellable>()
+    private var previousDeterminationId: NSManagedObjectID?
 
     private var glucoseFormatter: NumberFormatter {
         let formatter = NumberFormatter()
@@ -211,6 +212,11 @@ final class BaseCalendarManager: CalendarManager, Injectable {
         guard settingsManager.settings.useCalendar, let calendar = currentCalendar,
               let determinationId = await getLastDetermination() else { return }
 
+        // Ignore the update if the determinationId is the same as it was at last update
+        if determinationId == previousDeterminationId {
+            return
+        }
+
         let glucoseIds = await fetchGlucose()
 
         deleteAllEvents(in: calendar)
@@ -291,6 +297,8 @@ final class BaseCalendarManager: CalendarManager, Injectable {
 
             try eventStore.save(event, span: .thisEvent)
 
+            previousDeterminationId = determinationId
+
         } catch {
             debugPrint(
                 "\(DebuggingIdentifiers.failed) \(#file) \(#function) Failed to create calendar event: \(error.localizedDescription)"