Skip to content

Commit 08fa11b

Browse files
author
Rick Pasetto
authored
New Settings: add "delete [Pump,CGM] data" feature (testing only) (#210)
For testing only, and for backward-compatibility with the "old" settings screen, this adds the "delete pump data" and "delete CGM data" buttons to the new settings screen.
1 parent c93cea4 commit 08fa11b

File tree

3 files changed

+54
-8
lines changed

3 files changed

+54
-8
lines changed

Loop/View Controllers/SettingsTableViewController.swift

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -771,12 +771,22 @@ final class SettingsTableViewController: UITableViewController, IdentifiableClas
771771
}
772772

773773
private func presentTemporaryNewSettings(_ tableView: UITableView, _ indexPath: IndexPath) {
774-
let pumpViewModel = DeviceViewModel(deviceManagerUI: dataManager.pumpManager, isSetUp: dataManager.pumpManager != nil) { [weak self] in
774+
let pumpViewModel = DeviceViewModel(
775+
deviceManagerUI: dataManager.pumpManager,
776+
isSetUp: dataManager.pumpManager != nil,
777+
deleteData: (dataManager.pumpManager is TestingPumpManager) ? { [weak self] in self?.dataManager.deleteTestingPumpData()
778+
} : nil,
779+
onTapped: { [weak self] in
775780
self?.didSelectPump()
776-
}
777-
let cgmViewModel = DeviceViewModel(deviceManagerUI: dataManager.cgmManager as? DeviceManagerUI, isSetUp: dataManager.cgmManager != nil) { [weak self] in
781+
})
782+
let cgmViewModel = DeviceViewModel(
783+
deviceManagerUI: dataManager.cgmManager as? DeviceManagerUI,
784+
isSetUp: dataManager.cgmManager != nil,
785+
deleteData: (dataManager.cgmManager is TestingCGMManager) ? { [weak self] in self?.dataManager.deleteTestingCGMData()
786+
} : nil,
787+
onTapped: { [weak self] in
778788
self?.didSelectCGM()
779-
}
789+
})
780790
let pumpSupportedIncrements = dataManager.pumpManager.map {
781791
PumpSupportedIncrements(basalRates: $0.supportedBasalRates,
782792
bolusVolumes: $0.supportedBolusVolumes,

Loop/Views/SettingsView.swift

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ public struct SettingsView: View, HorizontalSizeClassOverride {
2929
}
3030
therapySettingsSection
3131
deviceSettingsSection
32+
if viewModel.pumpManagerSettingsViewModel.isTestingDevice {
33+
deletePumpDataSection
34+
}
35+
if viewModel.cgmManagerSettingsViewModel.isTestingDevice {
36+
deleteCgmDataSection
37+
}
3238
supportSection
3339
}
3440
.listStyle(GroupedListStyle())
@@ -130,6 +136,30 @@ extension SettingsView {
130136
}
131137
}
132138

139+
private var deletePumpDataSection: some View {
140+
Section {
141+
Button(action: { self.viewModel.pumpManagerSettingsViewModel.deleteData?() }) {
142+
HStack {
143+
Spacer()
144+
Text("Delete Pump Data").accentColor(.destructive)
145+
Spacer()
146+
}
147+
}
148+
}
149+
}
150+
151+
private var deleteCgmDataSection: some View {
152+
Section {
153+
Button(action: { self.viewModel.cgmManagerSettingsViewModel.deleteData?() }) {
154+
HStack {
155+
Spacer()
156+
Text("Delete CGM Data").accentColor(.destructive)
157+
Spacer()
158+
}
159+
}
160+
}
161+
}
162+
133163
private var supportSection: some View {
134164
Section(header: SectionHeader(label: NSLocalizedString("Support", comment: "The title of the support section in settings"))) {
135165
NavigationLink(destination: Text("Support")) {
@@ -214,8 +244,8 @@ public struct SettingsView_Previews: PreviewProvider {
214244

215245
SettingsView(viewModel: viewModel)
216246
.colorScheme(.dark)
217-
.previewDevice(PreviewDevice(rawValue: "iPhone XS Max"))
218-
.previewDisplayName("XS Max dark")
247+
.previewDevice(PreviewDevice(rawValue: "iPhone 11 Pro Max"))
248+
.previewDisplayName("11 Pro dark")
219249
}
220250
}
221251
}

Loop/Views/SettingsViewModel.swift

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,22 @@ import SwiftUI
1515
public class DeviceViewModel: ObservableObject {
1616
public init(deviceManagerUI: DeviceManagerUI? = nil,
1717
isSetUp: Bool = false,
18+
deleteData: (() -> Void)? = nil,
1819
onTapped: @escaping () -> Void = { }) {
1920
self.deviceManagerUI = deviceManagerUI
2021
self.isSetUp = isSetUp
22+
self.deleteData = deleteData
2123
self.onTapped = onTapped
2224
}
2325

2426
let deviceManagerUI: DeviceManagerUI?
25-
26-
@Published private(set) var isSetUp: Bool = false
27+
let deleteData: (() -> Void)?
2728

29+
@Published private(set) var isSetUp: Bool = false
30+
var isTestingDevice: Bool {
31+
return deleteData != nil
32+
}
33+
2834
var image: UIImage? { deviceManagerUI?.smallImage }
2935
var name: String { deviceManagerUI?.localizedTitle ?? "" }
3036

0 commit comments

Comments
 (0)