| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- import SwiftUI
- extension AddTempTarget {
- class ViewModel<Provider>: BaseViewModel<Provider>, ObservableObject where Provider: AddTempTargetProvider {
- @Injected() private var storage: TempTargetsStorage!
- @Injected() private var settingsManager: SettingsManager!
- @Injected() var apsManager: APSManager!
- @Published var low: Decimal = 0
- @Published var high: Decimal = 0
- @Published var duration: Decimal = 0
- @Published var date = Date()
- @Published var newPresetName = ""
- @Published var presets: [TempTarget] = []
- private(set) var units: GlucoseUnits = .mmolL
- override func subscribe() {
- units = settingsManager.settings.units
- presets = storage.presets()
- }
- func enact() {
- var lowTarget = low
- var highTarget = high
- highTarget = max(highTarget, lowTarget)
- if units == .mmolL {
- lowTarget = lowTarget.asMgdL
- highTarget = highTarget.asMgdL
- }
- let entry = TempTarget(
- name: TempTarget.custom,
- createdAt: date,
- targetTop: highTarget,
- targetBottom: lowTarget,
- duration: duration,
- enteredBy: TempTarget.manual,
- reason: TempTarget.custom
- )
- storage.storeTempTargets([entry])
- showModal(for: nil)
- }
- func cancel() {
- let entry = TempTarget(
- name: TempTarget.cancel,
- createdAt: Date(),
- targetTop: 0,
- targetBottom: 0,
- duration: 0,
- enteredBy: TempTarget.manual,
- reason: TempTarget.cancel
- )
- storage.storeTempTargets([entry])
- showModal(for: nil)
- }
- func save() {
- var lowTarget = low
- var highTarget = high
- highTarget = max(highTarget, lowTarget)
- if units == .mmolL {
- lowTarget = lowTarget.asMgdL
- highTarget = highTarget.asMgdL
- }
- let entry = TempTarget(
- name: newPresetName.isEmpty ? TempTarget.custom : newPresetName,
- createdAt: Date(),
- targetTop: highTarget,
- targetBottom: lowTarget,
- duration: duration,
- enteredBy: TempTarget.manual,
- reason: newPresetName.isEmpty ? TempTarget.custom : newPresetName
- )
- presets.append(entry)
- storage.storePresets(presets)
- }
- func enactPreset(id: String) {
- if var preset = presets.first(where: { $0.id == id }) {
- preset.createdAt = Date()
- storage.storeTempTargets([preset])
- showModal(for: nil)
- }
- }
- func removePreset(id: String) {
- presets = presets.filter { $0.id != id }
- storage.storePresets(presets)
- }
- }
- }
|