// // Storage.swift // LoopFollow // // Created by Jonas Björkert on 2024-08-25. // Copyright © 2024 Jon Fawcett. All rights reserved. // import Foundation import HealthKit /* Observable persistant storage */ class Storage { var remoteType = StorageValue(key: "remoteType", defaultValue: .nightscout) var deviceToken = StorageValue(key: "deviceToken", defaultValue: "") var expirationDate = StorageValue(key: "expirationDate", defaultValue: nil) var sharedSecret = StorageValue(key: "sharedSecret", defaultValue: "") var productionEnvironment = StorageValue(key: "productionEnvironment", defaultValue: true) var apnsKey = StorageValue(key: "apnsKey", defaultValue: "") var teamId = StorageValue(key: "teamId", defaultValue: nil) var keyId = StorageValue(key: "keyId", defaultValue: "") var bundleId = StorageValue(key: "bundleId", defaultValue: "") var user = StorageValue(key: "user", defaultValue: "") var maxBolus = SecureStorageValue(key: "maxBolus", defaultValue: HKQuantity(unit: .internationalUnit(), doubleValue: 1.0)) var maxCarbs = SecureStorageValue(key: "maxCarbs", defaultValue: HKQuantity(unit: .gram(), doubleValue: 30.0)) var maxProtein = SecureStorageValue(key: "maxProtein", defaultValue: HKQuantity(unit: .gram(), doubleValue: 30.0)) var maxFat = SecureStorageValue(key: "maxFat", defaultValue: HKQuantity(unit: .gram(), doubleValue: 30.0)) var mealWithBolus = StorageValue(key: "mealWithBolus", defaultValue: false) var mealWithFatProtein = StorageValue(key: "mealWithFatProtein", defaultValue: false) var cachedJWT = StorageValue(key: "cachedJWT", defaultValue: nil) var jwtExpirationDate = StorageValue(key: "jwtExpirationDate", defaultValue: nil) var backgroundRefreshType = StorageValue(key: "backgroundRefreshType", defaultValue: .silentTune) var selectedBLEDevice = StorageValue(key: "selectedBLEDevice", defaultValue: nil) var debugLogLevel = StorageValue(key: "debugLogLevel", defaultValue: false) var contactTrend = StorageValue(key: "contactTrend", defaultValue: .off) var contactDelta = StorageValue(key: "contactDelta", defaultValue: .off) var contactEnabled = StorageValue(key: "contactEnabled", defaultValue: false) var contactBackgroundColor = StorageValue(key: "contactBackgroundColor", defaultValue: ContactColorOption.black.rawValue) var contactTextColor = StorageValue(key: "contactTextColor", defaultValue: ContactColorOption.white.rawValue) var sensorScheduleOffset = StorageValue(key: "sensorScheduleOffset", defaultValue: nil) var alarms = StorageValue<[Alarm]>(key: "alarms", defaultValue: []) var alarmConfiguration = StorageValue( key: "alarmConfiguration", defaultValue: .default ) static let shared = Storage() private init() { } }