| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- import SwiftUI
- extension AddTempTarget {
- final class StateModel: BaseStateModel<Provider> {
- @Injected() private var storage: TempTargetsStorage!
- @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() {
- storage.storeTempTargets([TempTarget.cancel(at: Date())])
- 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)
- }
- }
- }
|