Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Loop/Managers/DeviceDataManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1273,7 +1273,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
}

Expand Down
8 changes: 8 additions & 0 deletions Loop/Managers/LoopAppManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -625,6 +625,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)
}
Expand Down
26 changes: 16 additions & 10 deletions Loop/Managers/ResetLoopManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
}

Expand Down Expand Up @@ -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() {
Expand Down
14 changes: 10 additions & 4 deletions Loop/View Controllers/StatusTableViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -239,9 +239,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)
Expand Down Expand Up @@ -784,7 +790,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)):
Expand Down