From 3598ea407a60d1a06c5adbb8bfa6c1aeed43cec4 Mon Sep 17 00:00:00 2001 From: Cameron Ingham Date: Fri, 16 Jun 2023 12:22:29 -0700 Subject: [PATCH 1/2] [LOOP-4669] Reset Loop Testing Data on Reset --- Loop/Managers/DeviceDataManager.swift | 2 +- Loop/Managers/LoopAppManager.swift | 8 ++++++++ Loop/Managers/ResetLoopManager.swift | 26 ++++++++++++++++---------- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/Loop/Managers/DeviceDataManager.swift b/Loop/Managers/DeviceDataManager.swift index 9c48de6c02..af992faf77 100644 --- a/Loop/Managers/DeviceDataManager.swift +++ b/Loop/Managers/DeviceDataManager.swift @@ -1271,7 +1271,7 @@ extension DeviceDataManager { func deleteTestingCGMData(completion: ((Error?) -> Void)? = nil) { guard let testingCGMManager = cgmManager as? TestingCGMManager else { - assertionFailure("\(#function) should be invoked only when a testing CGM manager is in use") + completion?(nil) return } diff --git a/Loop/Managers/LoopAppManager.swift b/Loop/Managers/LoopAppManager.swift index 3ec8c27fe6..1bc25047a1 100644 --- a/Loop/Managers/LoopAppManager.swift +++ b/Loop/Managers/LoopAppManager.swift @@ -620,6 +620,14 @@ extension LoopAppManager: ResetLoopManagerDelegate { } } + func resetTestingData(completion: @escaping () -> Void) { + deviceDataManager.deleteTestingCGMData { [weak deviceDataManager] _ in + deviceDataManager?.deleteTestingPumpData { _ in + completion() + } + } + } + func presentCouldNotResetLoopAlert(error: Error) { alertManager.presentCouldNotResetLoopAlert(error: error) } diff --git a/Loop/Managers/ResetLoopManager.swift b/Loop/Managers/ResetLoopManager.swift index 316c16b21b..fe3f1710a1 100644 --- a/Loop/Managers/ResetLoopManager.swift +++ b/Loop/Managers/ResetLoopManager.swift @@ -12,6 +12,8 @@ protocol ResetLoopManagerDelegate: AnyObject { func loopWillReset() func loopDidReset() + func resetTestingData(completion: @escaping () -> Void) + func presentConfirmationAlert( confirmAction: @escaping (_ pumpManager: PumpManager?, _ completion: @escaping () -> Void) -> Void, cancelAction: @escaping () -> Void @@ -46,15 +48,17 @@ class ResetLoopManager { self?.resetAlertPresented = false guard let pumpManager else { - self?.resetLoop() - completion() + self?.resetLoop { + completion() + } return } pumpManager.prepareForDeactivation() { [weak self] error in guard let error = error else { - self?.resetLoop() - completion() + self?.resetLoop() { + completion() + } return } @@ -84,13 +88,15 @@ class ResetLoopManager { loopIsAlreadyReset = hasReset } - private func resetLoop() { + private func resetLoop(completion: @escaping () -> Void) { delegate?.loopWillReset() - - resetLoopDocuments() - resetLoopUserDefaults() - - delegate?.loopDidReset() + + delegate?.resetTestingData { [weak self] in + self?.resetLoopDocuments() + self?.resetLoopUserDefaults() + self?.delegate?.loopDidReset() + completion() + } } private func resetLoopUserDefaults() { From 6f3a0670775012627b6549ce825081eb44cc7b48 Mon Sep 17 00:00:00 2001 From: Nathaniel Hamming Date: Tue, 27 Jun 2023 12:52:20 -0300 Subject: [PATCH 2/2] [COASTAL-1251] update comparison of boluses (#580) --- .../StatusTableViewController.swift | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Loop/View Controllers/StatusTableViewController.swift b/Loop/View Controllers/StatusTableViewController.swift index 23b2139712..0d83756dd5 100644 --- a/Loop/View Controllers/StatusTableViewController.swift +++ b/Loop/View Controllers/StatusTableViewController.swift @@ -240,9 +240,15 @@ final class StatusTableViewController: LoopChartsTableViewController { private var bolusState: PumpManagerStatus.BolusState = .noBolus { didSet { if oldValue != bolusState { - // Bolus starting - if case .inProgress = bolusState { - bolusProgressReporter = deviceManager.pumpManager?.createBolusProgressReporter(reportingOn: DispatchQueue.main) + switch bolusState { + case .inProgress(_): + guard case .inProgress = oldValue else { + // Bolus starting + bolusProgressReporter = deviceManager.pumpManager?.createBolusProgressReporter(reportingOn: DispatchQueue.main) + break + } + default: + break } refreshContext.update(with: .status) reloadData(animated: true) @@ -785,7 +791,7 @@ final class StatusTableViewController: LoopChartsTableViewController { case (.enactingBolus, .enactingBolus): break case (.bolusing(let oldDose), .bolusing(let newDose)): - if oldDose != newDose { + if oldDose.syncIdentifier != newDose.syncIdentifier { tableView.reloadRows(at: [statusIndexPath], with: animated ? .fade : .none) } case (.pumpSuspended(resuming: let wasResuming), .pumpSuspended(resuming: let isResuming)):