|
@@ -2,9 +2,7 @@ import Foundation
|
|
|
import SwiftUI
|
|
import SwiftUI
|
|
|
|
|
|
|
|
extension PreferencesEditor {
|
|
extension PreferencesEditor {
|
|
|
- final class StateModel: BaseStateModel<Provider>, PreferencesSettable {
|
|
|
|
|
- @Injected() var settingsManager: SettingsManager!
|
|
|
|
|
- private(set) var preferences = Preferences()
|
|
|
|
|
|
|
+ final class StateModel: BaseStateModel<Provider>, PreferencesSettable { private(set) var preferences = Preferences()
|
|
|
@Published var unitsIndex = 1
|
|
@Published var unitsIndex = 1
|
|
|
@Published var allowAnnouncements = false
|
|
@Published var allowAnnouncements = false
|
|
|
@Published var insulinReqFraction: Decimal = 0.7
|
|
@Published var insulinReqFraction: Decimal = 0.7
|
|
@@ -20,35 +18,19 @@ extension PreferencesEditor {
|
|
|
insulinReqFraction = settingsManager.settings.insulinReqFraction
|
|
insulinReqFraction = settingsManager.settings.insulinReqFraction
|
|
|
skipBolusScreenAfterCarbs = settingsManager.settings.skipBolusScreenAfterCarbs
|
|
skipBolusScreenAfterCarbs = settingsManager.settings.skipBolusScreenAfterCarbs
|
|
|
|
|
|
|
|
|
|
+ subscribeSetting(\.allowAnnouncements, on: $allowAnnouncements)
|
|
|
|
|
+ subscribeSetting(\.insulinReqFraction, on: $insulinReqFraction)
|
|
|
|
|
+ subscribeSetting(\.skipBolusScreenAfterCarbs, on: $skipBolusScreenAfterCarbs)
|
|
|
|
|
+
|
|
|
$unitsIndex
|
|
$unitsIndex
|
|
|
.removeDuplicates()
|
|
.removeDuplicates()
|
|
|
- .sink { [weak self] index in
|
|
|
|
|
- self?.settingsManager.settings.units = index == 0 ? .mgdL : .mmolL
|
|
|
|
|
|
|
+ .map { $0 == 0 ? GlucoseUnits.mgdL : .mmolL }
|
|
|
|
|
+ .sink { [weak self] units in
|
|
|
|
|
+ self?.settingsManager.settings.units = units
|
|
|
self?.provider.migrateUnits()
|
|
self?.provider.migrateUnits()
|
|
|
}
|
|
}
|
|
|
.store(in: &lifetime)
|
|
.store(in: &lifetime)
|
|
|
|
|
|
|
|
- $allowAnnouncements
|
|
|
|
|
- .removeDuplicates()
|
|
|
|
|
- .sink { [weak self] allow in
|
|
|
|
|
- self?.settingsManager.settings.allowAnnouncements = allow
|
|
|
|
|
- }
|
|
|
|
|
- .store(in: &lifetime)
|
|
|
|
|
-
|
|
|
|
|
- $insulinReqFraction
|
|
|
|
|
- .removeDuplicates()
|
|
|
|
|
- .sink { [weak self] fraction in
|
|
|
|
|
- self?.settingsManager.settings.insulinReqFraction = fraction
|
|
|
|
|
- }
|
|
|
|
|
- .store(in: &lifetime)
|
|
|
|
|
-
|
|
|
|
|
- $skipBolusScreenAfterCarbs
|
|
|
|
|
- .removeDuplicates()
|
|
|
|
|
- .sink { [weak self] skip in
|
|
|
|
|
- self?.settingsManager.settings.skipBolusScreenAfterCarbs = skip
|
|
|
|
|
- }
|
|
|
|
|
- .store(in: &lifetime)
|
|
|
|
|
-
|
|
|
|
|
// MARK: - Main fields
|
|
// MARK: - Main fields
|
|
|
|
|
|
|
|
let mainFields = [
|
|
let mainFields = [
|