Skip to content

Commit f7c8c4f

Browse files
committed
Display glucose units preference updates
1 parent 8b75d17 commit f7c8c4f

File tree

3 files changed

+13
-28
lines changed

3 files changed

+13
-28
lines changed

G7SensorKitUI/G7CGMManager/G7CGMManager+UI.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,15 @@ extension G7CGMManager: CGMManagerUI {
2828
return nil
2929
}
3030

31-
public static func setupViewController(bluetoothProvider: LoopKit.BluetoothProvider, displayGlucoseUnitObservable: LoopKitUI.DisplayGlucoseUnitObservable, colorPalette: LoopKitUI.LoopUIColorPalette, allowDebugFeatures: Bool, prefersToSkipUserInteraction: Bool) -> LoopKitUI.SetupUIResult<LoopKitUI.CGMManagerViewController, LoopKitUI.CGMManagerUI>
31+
public static func setupViewController(bluetoothProvider: LoopKit.BluetoothProvider, displayGlucosePreference: DisplayGlucosePreference, colorPalette: LoopKitUI.LoopUIColorPalette, allowDebugFeatures: Bool, prefersToSkipUserInteraction: Bool) -> LoopKitUI.SetupUIResult<LoopKitUI.CGMManagerViewController, LoopKitUI.CGMManagerUI>
3232
{
33-
let vc = G7UICoordinator(colorPalette: colorPalette, displayGlucoseUnitObservable: displayGlucoseUnitObservable, allowDebugFeatures: allowDebugFeatures)
33+
let vc = G7UICoordinator(colorPalette: colorPalette, displayGlucosePreference: displayGlucosePreference, allowDebugFeatures: allowDebugFeatures)
3434
return .userInteractionRequired(vc)
3535
}
3636

37-
public func settingsViewController(bluetoothProvider: BluetoothProvider, displayGlucoseUnitObservable: DisplayGlucoseUnitObservable, colorPalette: LoopUIColorPalette, allowDebugFeatures: Bool) ->CGMManagerViewController {
37+
public func settingsViewController(bluetoothProvider: BluetoothProvider, displayGlucosePreference: DisplayGlucosePreference, colorPalette: LoopUIColorPalette, allowDebugFeatures: Bool) ->CGMManagerViewController {
3838

39-
return G7UICoordinator(cgmManager: self, colorPalette: colorPalette, displayGlucoseUnitObservable: displayGlucoseUnitObservable, allowDebugFeatures: allowDebugFeatures)
39+
return G7UICoordinator(cgmManager: self, colorPalette: colorPalette, displayGlucosePreference: displayGlucosePreference, allowDebugFeatures: allowDebugFeatures)
4040
}
4141

4242
public var smallImage: UIImage? {

G7SensorKitUI/G7CGMManager/G7UICoordinator.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,18 @@ class G7UICoordinator: UINavigationController, CGMManagerOnboarding, CompletionN
1414
var cgmManagerOnboardingDelegate: LoopKitUI.CGMManagerOnboardingDelegate?
1515
var completionDelegate: LoopKitUI.CompletionDelegate?
1616
var cgmManager: G7CGMManager?
17-
var displayGlucoseUnitObservable: DisplayGlucoseUnitObservable
17+
var displayGlucosePreference: DisplayGlucosePreference
1818

1919
var colorPalette: LoopUIColorPalette
2020

2121
init(cgmManager: G7CGMManager? = nil,
2222
colorPalette: LoopUIColorPalette,
23-
displayGlucoseUnitObservable: DisplayGlucoseUnitObservable,
23+
displayGlucosePreference: DisplayGlucosePreference,
2424
allowDebugFeatures: Bool)
2525
{
2626
self.cgmManager = cgmManager
2727
self.colorPalette = colorPalette
28-
self.displayGlucoseUnitObservable = displayGlucoseUnitObservable
28+
self.displayGlucosePreference = displayGlucosePreference
2929
super.init(navigationBarClass: UINavigationBar.self, toolbarClass: UIToolbar.self)
3030
}
3131

@@ -75,7 +75,7 @@ class G7UICoordinator: UINavigationController, CGMManagerOnboarding, CompletionN
7575
}
7676
}
7777
},
78-
viewModel: G7SettingsViewModel(cgmManager: cgmManager!, displayGlucoseUnitObservable: displayGlucoseUnitObservable)
78+
viewModel: G7SettingsViewModel(cgmManager: cgmManager!, displayGlucosePreference: displayGlucosePreference)
7979
)
8080
let hostingController = DismissibleHostingController(rootView: view, colorPalette: colorPalette)
8181
return hostingController

G7SensorKitUI/Views/G7SettingsViewModel.swift

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class G7SettingsViewModel: ObservableObject {
2929
}
3030
}
3131

32-
var displayGlucoseUnitObservable: DisplayGlucoseUnitObservable
32+
let displayGlucosePreference: DisplayGlucosePreference
3333

3434
private var lastReading: G7GlucoseMessage?
3535

@@ -40,15 +40,6 @@ class G7SettingsViewModel: ObservableObject {
4040
return formatter
4141
}()
4242

43-
private lazy var glucoseFormatter: QuantityFormatter = {
44-
let formatter = QuantityFormatter()
45-
formatter.setPreferredNumberFormatter(for: displayGlucoseUnitObservable.displayGlucoseUnit)
46-
formatter.numberFormatter.notANumberSymbol = ""
47-
return formatter
48-
}()
49-
50-
private let quantityFormatter = QuantityFormatter()
51-
5243
private var cgmManager: G7CGMManager
5344

5445
var progressBarState: G7ProgressBarState {
@@ -68,9 +59,9 @@ class G7SettingsViewModel: ObservableObject {
6859
}
6960
}
7061

71-
init(cgmManager: G7CGMManager, displayGlucoseUnitObservable: DisplayGlucoseUnitObservable) {
62+
init(cgmManager: G7CGMManager, displayGlucosePreference: DisplayGlucosePreference) {
7263
self.cgmManager = cgmManager
73-
self.displayGlucoseUnitObservable = displayGlucoseUnitObservable
64+
self.displayGlucosePreference = displayGlucosePreference
7465
updateValues()
7566

7667
self.cgmManager.addStateObserver(self, queue: DispatchQueue.main)
@@ -188,19 +179,13 @@ class G7SettingsViewModel: ObservableObject {
188179
case .some(.aboveRange):
189180
return LocalizedString("HIGH", comment: "String displayed instead of a glucose value above the CGM range")
190181
default:
191-
quantityFormatter.setPreferredNumberFormatter(for: displayGlucoseUnitObservable.displayGlucoseUnit)
192-
let valueStr = quantityFormatter.string(from: quantity, for: displayGlucoseUnitObservable.displayGlucoseUnit, includeUnit: false) ?? ""
193-
return String(format: "%@ %@", valueStr, displayGlucoseUnitObservable.displayGlucoseUnit.shortLocalizedUnitString())
182+
return displayGlucosePreference.formatter.string(from: quantity)!
194183
}
195184
}
196185

197186
var lastGlucoseTrendString: String {
198187
if let lastReading = lastReading, lastReading.hasReliableGlucose, let trendRate = lastReading.trendRate {
199-
let glucoseUnitPerMinute = displayGlucoseUnitObservable.displayGlucoseUnit.unitDivided(by: .minute())
200-
// This seemingly strange replacement of glucose units is only to display the unit string correctly
201-
let trendPerMinute = HKQuantity(unit: displayGlucoseUnitObservable.displayGlucoseUnit, doubleValue: trendRate.doubleValue(for: glucoseUnitPerMinute))
202-
let formatted = glucoseFormatter.string(from: trendPerMinute, for: displayGlucoseUnitObservable.displayGlucoseUnit)!
203-
return String(format: LocalizedString("%@/min", comment: "Format string for glucose trend per minute. (1: glucose value and unit)"), formatted)
188+
return displayGlucosePreference.minuteRateFormatter.string(from: trendRate)!
204189
} else {
205190
return ""
206191
}

0 commit comments

Comments
 (0)