From 211dbc04e73ab8d7b0886f7c7b6f7b20c3b39d6a Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Thu, 16 Apr 2020 22:07:56 -0500 Subject: [PATCH] Dispatch dosestore completions back to main --- Cartfile.resolved | 4 +- .../StatusTableViewController.swift | 66 +++++++++++-------- 2 files changed, 40 insertions(+), 30 deletions(-) diff --git a/Cartfile.resolved b/Cartfile.resolved index 25b55ea0cf..1593dd9c83 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1,8 +1,8 @@ github "LoopKit/Amplitude-iOS" "2137d5fd44bf630ed33e1e72d7af6d8f8612f270" github "LoopKit/CGMBLEKit" "edcf503ef8fe260b69ca98eae508e679dfd9ad69" github "LoopKit/G4ShareSpy" "88c5a296e83ce618319ae365a7e6da76d9be126b" -github "LoopKit/LoopKit" "0bdd536a1ecd0e0d5a948f73d743f95d70686bed" +github "LoopKit/LoopKit" "6940ab10d258b21e0a33aa5729b1111a8d332d77" github "LoopKit/MKRingProgressView" "f548a5c64832be2d37d7c91b5800e284887a2a0a" github "LoopKit/dexcom-share-client-swift" "c37d87fcf121c44721e87c9e6d2bea94e48728cc" github "i-schuetz/SwiftCharts" "0.6.5" -github "ps2/rileylink_ios" "37b7f578e399d41886237ef1046a912156cbb9fd" +github "ps2/rileylink_ios" "73d816f53d3a7bc6d58c904bd4160660315a2038" diff --git a/Loop/View Controllers/StatusTableViewController.swift b/Loop/View Controllers/StatusTableViewController.swift index 1ff8f2d5a2..50fe1c9fb8 100644 --- a/Loop/View Controllers/StatusTableViewController.swift +++ b/Loop/View Controllers/StatusTableViewController.swift @@ -353,8 +353,10 @@ final class StatusTableViewController: ChartsTableViewController { if currentContext.contains(.carbs) { reloadGroup.enter() manager.carbStore.getCarbsOnBoardValues(start: startDate, effectVelocities: manager.settings.dynamicCarbAbsorptionEnabled ? state.insulinCounteractionEffects : nil) { (values) in - cobValues = values - reloadGroup.leave() + DispatchQueue.main.async { + cobValues = values + reloadGroup.leave() + } } } @@ -364,49 +366,57 @@ final class StatusTableViewController: ChartsTableViewController { if currentContext.contains(.glucose) { reloadGroup.enter() self.deviceManager.loopManager.glucoseStore.getCachedGlucoseSamples(start: startDate) { (values) -> Void in - glucoseValues = values - reloadGroup.leave() + DispatchQueue.main.async { + glucoseValues = values + reloadGroup.leave() + } } } if currentContext.contains(.insulin) { reloadGroup.enter() deviceManager.loopManager.doseStore.getInsulinOnBoardValues(start: startDate) { (result) -> Void in - switch result { - case .failure(let error): - self.log.error("DoseStore failed to get insulin on board values: %{public}@", String(describing: error)) - retryContext.update(with: .insulin) - iobValues = [] - case .success(let values): - iobValues = values + DispatchQueue.main.async { + switch result { + case .failure(let error): + self.log.error("DoseStore failed to get insulin on board values: %{public}@", String(describing: error)) + retryContext.update(with: .insulin) + iobValues = [] + case .success(let values): + iobValues = values + } + reloadGroup.leave() } - reloadGroup.leave() } reloadGroup.enter() deviceManager.loopManager.doseStore.getNormalizedDoseEntries(start: startDate) { (result) -> Void in - switch result { - case .failure(let error): - self.log.error("DoseStore failed to get normalized dose entries: %{public}@", String(describing: error)) - retryContext.update(with: .insulin) - doseEntries = [] - case .success(let doses): - doseEntries = doses + DispatchQueue.main.async { + switch result { + case .failure(let error): + self.log.error("DoseStore failed to get normalized dose entries: %{public}@", String(describing: error)) + retryContext.update(with: .insulin) + doseEntries = [] + case .success(let doses): + doseEntries = doses + } + reloadGroup.leave() } - reloadGroup.leave() } reloadGroup.enter() deviceManager.loopManager.doseStore.getTotalUnitsDelivered(since: Calendar.current.startOfDay(for: Date())) { (result) in - switch result { - case .failure: - retryContext.update(with: .insulin) - totalDelivery = nil - case .success(let total): - totalDelivery = total.value - } + DispatchQueue.main.async { + switch result { + case .failure: + retryContext.update(with: .insulin) + totalDelivery = nil + case .success(let total): + totalDelivery = total.value + } - reloadGroup.leave() + reloadGroup.leave() + } } }